15.4.6. IdentityManager の使用
IdentityManager へのアクセス方法は 2 通りあります。 Seam コンポーネントにインジェクトする方法は次のとおりです。
@In IdentityManager identityManager;
@In IdentityManager identityManager;
その静的な
instance() メソッド経由によるアクセス方法は以下のとおりです。
IdentityManager identityManager = IdentityManager.instance();
IdentityManager identityManager = IdentityManager.instance();
以下のテーブルに
IdentityManager のAPIのメソッドを示します。
|
メソッド
|
戻り値
|
詳細
|
|---|---|---|
createUser(String name, String password)
| boolean
|
指定された名前とパスワードで新規ユーザーのアカウントを作成します。成功すれば
true を、しなければ false を返します。
|
deleteUser(String name)
| boolean
|
指定された名前のユーザーアカウントを削除します。 成功すれば
true を、しなければ false を返します。
|
createRole(String role)
| boolean
|
指定された名前の新しいロールを作成します。 成功すれば
true を、しなければ false を返します。
|
deleteRole(String name)
| boolean
|
指定された名前のロールを削除します。 成功すれば
true を、しなければ false を返します。
|
enableUser(String name)
| boolean
|
指定された名前のユーザーアカウントを有効にします。有効でないアカウントは認証できません。 成功すれば
true を、しなければ false を返します。
|
disableUser(String name)
| boolean
|
指定された名前のユーザーアカウントを無効にします。成功すれば
true を、しなければ false を返します。
|
changePassword(String name, String password)
| boolean
|
指定された名前のユーザーアカウントのパスワードを変更します。 成功すれば
true を、しなければ false を返します。
|
isUserEnabled(String name)
| boolean
|
指定されたユーザーアカウントが有効であれば
true を、これ以外は false を返します。
|
grantRole(String name, String role)
| boolean
|
指定ロールを指定したユーザーまたはロールに付与します。 ロールを付与するには、 そのロールが既に存在している必要があります。 ロールの付与が成功した場合には
true を返し、 そのロールがユーザーに既に付与されていた場合には false を返します。
|
revokeRole(String name, String role)
| boolean
|
特定のユーザーまたはロールから指定したロールを取り消します。ユーザーが当該のロールのメンバーであり、かつ取り消しが成功した場合には
true を返し、ユーザーが当該ロールのメンバーでなければ false を返します。
|
userExists(String name)
| boolean
|
指定ユーザーが存在すれば
true を、 存在していなければ false を返します。
|
listUsers()
| List
|
英数字順にソートされたすべてのユーザー名の一覧を返します。
|
listUsers(String filter)
| List
|
指定されたフィルタパラメータでフィルタしたユーザー名のリストを英数字順にソートして返します
|
listRoles()
| List
|
すべてのロール名の一覧を返します。
|
getGrantedRoles(String name)
| List
|
指定されたユーザー名に明示的に付与された全ロールの一覧を返します。
|
getImpliedRoles(String name)
| List
|
指定されたユーザー名に対して暗示的に付与されている全ロールの一覧を返します。 暗示的に付与されているロールとは、ユーザーに直接付与されたロールではなく、 ユーザーがメンバーとなるロールに対して付与されたロールなどです。 例えば、
admin ロールが user ロールのメンバーであり、 ユーザーが admin ロールのメンバーであった場合、 このユーザーの暗示的なロールは admin ロールと user ロールの両方になります。
|
authenticate(String name, String password)
| boolean
|
設定された Identity Store を使ってユーザー名とパスワードを認証します。 認証が成功すれば
true を、失敗すれば false を返します。認証が成功しても、このメソッドの戻り値以外は何も変化しませんし、Identity コンポーネントの状態も変化しません。適切に Seam にログインするには Identity.login() を使用する必要があります。
|
addRoleToGroup(String role, String group)
| boolean
|
特定のロールを指定したグループのメンバーとして追加します。成功すれば true を返します。
|
removeRoleFromGroup(String role, String group)
| boolean
|
指定されたロールを指定されたグループから削除します。成功すれば true を返します。
|
listRoles()
| List
|
すべてのロール名を一覧表示します。
|
ユーザー呼び出しにはアイデンティティ管理 API でメソッドを呼び出すための適切な承認が必要となります。 次の表では
IdentityManager 内の各メソッドに対するパーミッション要件を示します。 以下に記載されるパーミッションターゲットはリテラル文字列値です。
|
メソッド
|
パーミッションターゲット
|
パーミッションのアクション
|
|---|---|---|
createUser()
| seam.user
| create
|
deleteUser()
| seam.user
| delete
|
createRole()
| seam.role
| create
|
deleteRole()
| seam.role
| delete
|
enableUser()
| seam.user
| update
|
disableUser()
| seam.user
| update
|
changePassword()
| seam.user
| update
|
isUserEnabled()
| seam.user
| read
|
grantRole()
| seam.user
| update
|
revokeRole()
| seam.user
| update
|
userExists()
| seam.user
| read
|
listUsers()
| seam.user
| read
|
listRoles()
| seam.role
| read
|
addRoleToGroup()
| seam.role
| update
|
removeRoleFromGroup()
| seam.role
| update
|
以下のコードのリストでは
admin ロールの全メンバーにアイデンティティ管理関連の全メソッドへのアクセス権を許可する一連のセキュリティルールの例を示しています。