15.4. アイデンティティ管理
アイデンティティ管理は、バックエンドの動作で使用されるアイデンティティストア (データベース、 LDAP など) に関わらず Seam アプリケーションのユーザーとロールの管理に標準の API を提供します。アイデンティティ管理 API の中核となるのが
identityManager コンポーネントです。それは、ユーザーの作成、 変更および削除、 ロールの許可とその取り消し、 パスワードの変更、 ユーザーアカウントの有効化と無効化、 ユーザーの認証、 ユーザーとロールの一覧表示などを行うための全メソッドを提供します。
使用する前に
identityManager に IdentityStore を 1 つ以上設定する必要があります。 これらのコンポーネントがバックエンドのセキュリティプロバイダと連携して動作します。
15.4.1. IdentityManager の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
identityManager コンポーネントにより、認証および承認に対して別々のアイデンティティストアを設定することができます。 つまり、 ユーザーを任意のアイデンティティストアに対して認証させることができますが (LDAP ディレクトリなど)、そのユーザーのロールは別のアイデンティティストア (リレーショナルデータベースなど) からロードさせます。
Seam は特に設定を必要としない 2 種類の
IdentityStore 実装を提供しています。 デフォルトとなる JpaIdentityStore はリレーショナルデータベースを使用してユーザーとロールの情報を格納します。 もうひとつの実装は LdapIdentityStore で、LDAP ディレクトリを使用してユーザーとロールを格納します。
identityManager コンポーネントにはidentityStore と roleIdentityStore の 2 つの設定可能なプロパティがあります。 これらプロパティの値は IdentityStore インターフェースを使って Seam コンポーネントを参照する EL 式でなければなりません。 特に設定しないとデフォルトが使用されます (JpaIdentityStore)。 また、 identityStore プロパティのみを設定した場合には roleIdentityStore に同じ値が使用されます。 例えば、 components.xml にある次のエントリは identityManager がユーザー関連の操作およびロール関連の操作の両方に LdapIdentityStore を使用するよう設定します。
<security:identity-manager identity-store="#{ldapIdentityStore}"/>
<security:identity-manager identity-store="#{ldapIdentityStore}"/>
下記の例ではユーザーに関する処理は
LdapIdentityStore を、 またロールに関する処理には JpaIdentityStore を使用するよう identityManager を設定しています。
<security:identity-manager identity-store="#{ldapIdentityStore}"
role-identity-store="#{jpaIdentityStore}"/>
<security:identity-manager identity-store="#{ldapIdentityStore}"
role-identity-store="#{jpaIdentityStore}"/>
次項からは各アイデンティティのストレージメソッドに関して詳細に説明していきます。