2.6. 複数のアイデンティティーストアを使用した認証および承認の設定
異なるアイデンティティーストアにアイデンティティーの属性を保存する場合は、aggregate-realm
を使用してアイデンティティー属性を 1 つのセキュリティーレルムにロードし、認証および承認を行います。
2.6.1. Elytron での集約レルム
aggregate-realm
では、認証に 1 つのセキュリティーレルムを、Elytron の承認に別のセキュリティーレルム、または複数のセキュリティーレルムの集約を使用できます。たとえば、認証にプロパティーレルムを、承認に JDBC レルムを使用するように、集約レルムを設定できます。
複数の承認レルムを集約するように設定された集約レルムでは、アイデンティティーは以下のように作成されます。
- 承認用に設定された各セキュリティーレルムの属性値を読み込む。
- 複数の承認レルムで属性が定義されている場合は、最初に表示される属性の値を使用する。
以下の例では、複数の承認レルムに同じアイデンティティー属性の定義が含まれる場合のアイデンティティーの作成方法を説明します。
例
集約レルムの設定:
authentication-realm=properties-realm, authorization-realms=[jdbc-realm,ldap-realm]
authentication-realm=properties-realm,
authorization-realms=[jdbc-realm,ldap-realm]
JDBC レルムから取得した属性値:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow e-mail: user@example.com groups: Supervisor, User
e-mail: user@example.com groups: Supervisor, User
ldap レルムから取得した属性値:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow e-mail: administrator@example.com phone: 0000 0000 0000
e-mail: administrator@example.com phone: 0000 0000 0000
集約レルムから取得した生成アイデンティティー:
e-mail: user@example.com groups: Supervisor, User phone: 0000 0000 0000
e-mail: user@example.com
groups: Supervisor, User
phone: 0000 0000 0000
この例では、e-mail
属性は両方の承認レルムで定義されます。JDBC レルムで定義された値は、集約レルムは、承認レルムを集約するように設定されているため (authorization-realms=[jdbc-realm,ldap-realm]
)、生成された集約レルムの e-mail
属性に使用されます。
2.6.2. 集約レルムを使用した認証および承認の設定
集約レルムを使用して認証および承認を設定するには、集約レルムを作成し、セキュリティードメインとアプリケーションセキュリティードメインが集約レルムを使用するように設定します。
前提条件
集約するセキュリティーレルムを設定する。
セキュリティーレルムの設定に関する詳細は、アイデンティティー管理の設定方法ガイドの Elytron サブシステム を参照してください。
セキュリティードメインで使用するロールデコーダーを設定する。
ロールデコーダーの詳細は、サーバーセキュリティーの設定方法の Elytron ロールデコーダーの作成 を参照してください。
手順
集約レルムを作成します。
1 つの承認レルムで集約レルムを作成するには、以下を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /subsystem=elytron/aggregate-realm=exampleAggregateRealm:add(authentication-realm=__SECURITY_REALM_FOR_AUTHENTICATION__, authorization-realm=__SECURITY_REALM_FOR_AUTHORIZATION__)
/subsystem=elytron/aggregate-realm=exampleAggregateRealm:add(authentication-realm=__SECURITY_REALM_FOR_AUTHENTICATION__, authorization-realm=__SECURITY_REALM_FOR_AUTHORIZATION__)
複数の承認レルムで集約レルムを作成するには、以下を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /subsystem=elytron/aggregate-realm=exampleAggregateRealm:add(authentication-realm=__SECURITY_REALM_FOR_AUTHENTICATION__, authorization-realms=[__SECURITY_REALM_FOR_AUTHORIZATION_1__,__SECURITY_REALM_FOR_AUTHORIZATION_2__,...,__SECURITY_REALM_FOR_AUTHORIZATION_N__])
/subsystem=elytron/aggregate-realm=exampleAggregateRealm:add(authentication-realm=__SECURITY_REALM_FOR_AUTHENTICATION__, authorization-realms=[__SECURITY_REALM_FOR_AUTHORIZATION_1__,__SECURITY_REALM_FOR_AUTHORIZATION_2__,...,__SECURITY_REALM_FOR_AUTHORIZATION_N__])
security-domain
を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow /subsystem=elytron/security-domain=exampleAggregateRealmSD:add(realms=[{realm=exampleAggregateRealm,role-decoder=__ROLE-DECODER__}],default-realm=exampleAggregateRealm,permission-mapper=default-permission-mapper)
/subsystem=elytron/security-domain=exampleAggregateRealmSD:add(realms=[{realm=exampleAggregateRealm,role-decoder=__ROLE-DECODER__}],default-realm=exampleAggregateRealm,permission-mapper=default-permission-mapper)
undertow
サブシステムでapplication-security-domain
を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow /subsystem=undertow/application-security-domain=exampleAggregareRealmApplicationDomain:add(security-domain=exampleAggregateRealmSD)
/subsystem=undertow/application-security-domain=exampleAggregareRealmApplicationDomain:add(security-domain=exampleAggregateRealmSD)
アプリケーションの
web.xml
およびjboss-web.xml
を設定します。アプリケーションの
web.xml
およびjboss-web.xml
は、JBoss EAP で設定したapplication-security-domain
を使用するように更新する必要があります。このサンプルは、Configure Web Applications to use Elytron or Legacy Security for Authentication で確認できます。
2.6.3. 集約レルムの例
承認レルムと集約レルムの例
この例では、認証に properties-realm
を、承認に jdbc-realm
を使用します。
以下のレルムを事前設定する必要があります。
-
examplPropertiesRealm という名前の
properties-realm
-
exampleJdbcRealm という名前の
jdbc-realm
以下のコマンドを実行して、集約レルムを作成します。
/subsystem=elytron/aggregate-realm:exampleSimpleAggregateRealm:add(authentication-realm=examplPropertiesRealm,authorization-realm=exampleJdbcRealm)
/subsystem=elytron/aggregate-realm:exampleSimpleAggregateRealm:add(authentication-realm=examplPropertiesRealm,authorization-realm=exampleJdbcRealm)
承認レルム 2 つと集約レルムの例
この例では、認証に properties-realm
を、承認に ldap-realm
と jdbc-realm
の集約を使用します。
以下のレルムを事前設定する必要があります。
-
examplPropertiesRealm という名前の
properties-realm
-
exampleJdbcRealm という名前の
jdbc-realm
-
exampleLdapRealm という名前の
ldap-realm
以下のコマンドを実行して、集約レルムを作成します。
/subsystem=elytron/aggregate-realm:exampleSimpleAggregateRealm:add(authentication-realm=examplPropertiesRealm,authorization-realms=[exampleJdbcRealm,exampleLdapRealm])
/subsystem=elytron/aggregate-realm:exampleSimpleAggregateRealm:add(authentication-realm=examplPropertiesRealm,authorization-realms=[exampleJdbcRealm,exampleLdapRealm])