8 アイデンティティ・ストアの構成
この章の内容は次のとおりです。
関連項目:
『Identity Governance Frameworkによるアプリケーションの開発』のアイデンティティ・ディレクトリAPIの概要
アイデンティティ・ストアについて
アイデンティティ・ストアには、ユーザーとグループの他、そのデータを問い合せることができるサービスが格納されます。デフォルトでは、単一のLDAPアイデンティティ・ストアへの問合せがサポートされます。1つのみではなく、複数のLDAPアイデンティティ・リポジトリに問い合せることが可能になる仮想アイデンティティ・ストアを使用するようにサービスを構成できます。アイデンティティ仮想化の詳細は、「アイデンティティ・ストアの構成」を参照してください。
構成に応じて、サービスではファイルまたは(1つ以上の) LDAPサーバーをアイデンティティのリポジトリとして使用します。LDAP用にサービスを構成すると、デフォルトでは単一のLDAPに問い合せますが、複数のLDAPに問い合せるようにサービスを構成することもできます。
サービスは、Java SE環境で使用できます。Java SEアプリケーションでの仮想化の詳細は、「Java SEアプリケーションでの仮想化の構成」を参照してください。
アイデンティティ・ストア・プロバイダの構成
アイデンティティ・ストアを使用する前に、アイデンティティ・ストア・プロバイダを構成する必要があります。OPSSでは、次の構成の例で示すように、ファイルとLDAPの両方のアイデンティティ・ストア・プロバイダがサポートされています。
<serviceProvider type="IDENTITY_STORE" name="idstore.ldap.provider" class="oracle.security.jps.internal.idstore.ldap.LdapIdentityStoreProvider"> <description>LDAP IdentityStore Provider</description> </serviceProvider> <serviceProvider type="IDENTITY_STORE" name="idstore.xml.provider" class="oracle.security.jps.internal.idstore.xml.XmlIdentityStoreProvider"> <description>XML-based IdentityStore Provider</description> </serviceProvider>
Active Directoryをアイデンティティ・ストア・プロバイダとして設定した場合、デフォルト値(cn
)をオーバーライドするには、jps-config.xml
(またはjps-config-jse.xml
)でUSERNAME_ATTR
プロパティとUSER_LOGIN_ATTR
プロパティをsAMAccountName
に設定します。例:
<property value="sAMAccountName" name="username.attr"/> <property value="sAMAccountName" name="user.login.attr"/>
注意:
virtualize
をtrue
に設定する場合は、user.login.attr
プロパティとusername.attr
プロパティは設定しないでください。
アイデンティティ・ストアの構成
次の各項では、アイデンティティ・ストアの構成方法について説明します。
関連項目:
アイデンティティ・ストアのパラメータ
次の各項では、アイデンティティ・ストアの構成パラメータの使用方法について説明します。
問合せパラメータ
次のパラメータを使用して、複数のLDAPへの問合せを構成します。
-
virtualize
プロパティ - このプロパティには、true
(複数のLDAP検索)またはfalse
(単一のLDAP検索)を設定できます。指定しない場合は、デフォルトのfalse
に設定されます。 -
グローバル接続パラメータ(
virtualize
プロパティが有効の場合) - コール元のアプリケーションではこれらのパラメータを使用して、グローバルLDAP構成(検索ベース、作成ベースなど)を指定します。これらのパラメータのいずれかを指定しない場合は、デフォルト値が使用されます。 -
バックエンド接続パラメータ - このパラメータは各LDAPストアに固有のものです。各LDAPに対して1セットのバックエンド・パラメータが指定されます。デフォルト値を上書きしない場合は、これらのパラメータを設定する必要がありません。
グローバル接続パラメータ
表8-1に、グローバル・パラメータを示します。接続プール・パラメータのリストは、『Identity Governance Frameworkによるアプリケーションの開発』のIDSの構成パラメータを参照してください。
表8-1 LDAPアイデンティティ・ストアのグローバル・パラメータ
パラメータ | デフォルト値 |
---|---|
|
user.create.basesと同じ |
|
groupofuniquenames |
|
デフォルト値なし |
|
uniquemember |
|
groupofuniquenames |
|
デフォルト値なし |
|
デフォルト値なし |
|
デフォルト値なし |
|
cn |
|
デフォルト値なし |
|
デフォルト値なし |
|
認証プロバイダが1つしかない場合は、作成ベース値が使用されます。複数ある場合は、デフォルト値が設定されません。 |
|
inetorgperson |
|
uid |
|
デフォルト値なし |
|
inetorgperson |
|
group.search.basesと同じ |
|
cn |
関連項目:
サービス構成の理解
LDAP認証プロバイダは、Oracle WebLogic Server管理コンソールまたはWebLogic Scripting Tool (WLST)を使用して構成します。実行時に、サーバーから構成の詳細がOPSSに渡されます。
WebLogic Serverドメインでは、指定したコンテキストで複数の認証プロバイダを構成できます。デフォルトでは、リストで最初の認証プロバイダを使用してアイデンティティ・ストアが初期化されます。認証プロバイダの詳細は、「複数の認証プロバイダのサポート」を参照してください。
複数のLDAPに問い合せるには、virtualize
プロパティの設定が必要です。
次の各項では、いくつかの構成について説明します。
単一のLDAP用のサービスの構成
次の例では、単一のLDAPサービス・インスタンスの構成を示します。
<!-- JPS WLS LDAP Identity Store Service Instance --> <serviceInstance name=idstore.ldap provider=idstore.ldap.provider> <property name=idstore.config.provider value=oracle.security.jps.wls.internal.idstore. WlsLdapIdStoreConfigProvider/> <property name=CONNECTION_POOL_CLASS value=oracle.security.idm.providers.stdldap.JNDIPool/> </serviceInstance>
仮想化を指定しない複数のLDAP用のサービスの構成
virtualize
プロパティを設定できない場合は、複数のLDAPに問い合せて、WebLogic Serverの構成をオーバーライドするようにサービスを構成できます。複数のLDAPを指定するには、LDAP URLのカンマ区切りリストを使用します。
<property name="ldap.url", value="ldap://host1:port1,ldap://host2:port2"/>
Fusion Middleware Controlを使用した複数のLDAP用のサービスの構成
Fusion Middleware Controlを使用して複数のLDAPに対するサービスを構成するには、次の手順を実行します。
WLSTを使用したタイムアウト設定の構成
WLSTを使用してアダプタ・タイムアウトを設定するには、次の手順を実行します。
関連項目:
『Identity and Access ManagementのためのWebLogic Scripting Toolコマンド・リファレンス』のmodifyLDAPAdapterに関する項
その他のパラメータの構成
必要に応じて、jps-config.xml
ファイルの構成を更新して、「アイデンティティ・ストアのパラメータ」に記載されている問合せパラメータを設定します。これらのパラメータはオプションであり、デフォルト値があります。
単一および複数のLDAPの構成
次の例では、単一のLDAPの構成を示します。
<serviceInstance name=idstore.ldap provider=idstore.ldap.provider> <property name=idstore.config.provider value=oracle.security.jps.wls.internal.idstore. WlsLdapIdStoreConfigProvider/> <property name=CONNECTION_POOL_CLASS value=oracle.security.idm.providers.stdldap.JNDIPool/> </serviceInstance>
次の例では、複数のLDAPの構成を示します。
<serviceProviders> <serviceProvider type="IDENTITY_STORE" name="idstore.ldap.provider" class="oracle.security.jps.internal.idstore.ldap.LdapIdentityStoreProvider"> <description>LDAP IdentityStore Provider</description> </serviceProvider> </serviceProviders> <serviceInstances> <!-- IDstore instance connecting to multiple ldap --> <serviceInstance name="idstore.virtualize" provider="idstore.ldap.provider"> <!-- indicates using WLS ldap authentication providers --> <property name="idstore.config.provider" value="oracle.security.jps.wls.internal.idstore.WlsLdapIdStoreConfigProvider"/> <!-- enable virtualization --> <property name="virtualize" value="true"/> <!-- ldap properties (if not supplied, then it uses default values) --> <extendedProperty> <name>user.create.bases</name> <values> <value>cn=users_front,dc=us,dc=example,dc=com</value> </values> </extendedProperty> <extendedProperty> <name>group.create.bases</name> <values> <value>cn=groups_front,dc=us,dc=example,dc=com</value> </values> </extendedProperty> </serviceInstance> </serviceInstances> <jpsContexts default="default"> <!-- the identity store uses multiple ldaps --> <jpsContext name="default"> <!-- use multiple ldap --> <serviceInstanceRef ref="idstore.virtualize"/> <!-- .....other services --> </jpsContext> </jpsContexts> </jpsConfig>
次の点に注意してください:
-
サービス・インスタンスの
virtualize
プロパティはtrue
であり、この値により、複数のLDAPディレクトリに問い合せることができます。 -
extendedProperty
要素を使用すると、デフォルト値をオーバーライドするようにフロントエンド・パラメータを設定できます。
関連項目:
分割プロファイルの構成
アイデンティティ仮想化では分割プロファイルがサポートされており、アイデンティティ属性が複数のLDAPリポジトリに格納されている場合、その属性にアプリケーションでアクセスできます。
この機能には、ID仮想化のためのアダプタ構成に記載されている追加構成が必要です。
カスタム認証プロバイダの構成
OPSSでは、アイデンティティへのアクセスにWebLogic認証プロバイダがサポートされています。使用可能なプロバイダが特定のLDAPサーバーに適合していない場合は通常、カスタマイズします。この項では、カスタム認証プロバイダを構成して使用する方法について説明します。
カスタムLDAP認証プロバイダを使用する場合に、次の構成では、jps-config.xml
のidstore.type
をオーバーライドすることで、プロバイダが適切なLDAPプラグインを検出できるようにLDAPタイプを使用する方法を示します。
<serviceInstance name="idstore.ldap" provider="idstore.ldap.provider"> <property name="idstore.config.provider" value="oracle.security.jps.wls.internal.idstore.WlsLdapIdStoreConfigProvider" /> <property name="CONNECTION_POOL_CLASS" value="oracle.security.idm.providers.stdldap.JNDIPool" /> <property value="true" name="virtualize" /> <serviceInstanceRef ref="myGenericLDAPName"/> </serviceInstance> <serviceInstance name="myGenericLDAPName" provider="idstore.ldap.provider"> <!-- overrides the 'idstore.type' property --> <property name="idstore.type" value="ACTIVE_DIRECTORY" /> </serviceInstance>
追加のLDAPプロバイダ・インスタンスをオーバーライドするには、同様のエントリを挿入します。プロバイダ構成の詳細は、「Fusion Middleware Controlを使用したセキュリティ・プロバイダの構成」を参照してください。
プログラムによるアイデンティティ・ストアの問合せ
アイデンティティ・ストアにプログラムで問い合せるには、OPSS APIを使用してコンテキストを取得します。このコンテキストは、ストア・インスタンスを取得するブリッジのように機能します。続いて、ユーザーおよびロールAPIを使用して、ストア・インスタンスに問い合せます。
try { //find the JPS context JpsContextFactory ctxFactory = JpsContextFactory.getContextFactory(); JpsContext ctx = ctxFactory.getContext(); //find the JPS IdentityStore service instance //(assuming the back-end is ldap type) LdapIdentityStore idstoreService = (LdapIdentityStore)ctx.getServiceInstance(IdentityStoreService.class) //get the User/Role API's Idmstore instance oracle.security.idm.IdentityStore idmIdentityStore = idstoreService.getIdmStore(); //use the User/Role API to query ID store // //alternatively, instead of using IdentityStore, use the //IdentityDirectory to access LDAP oracle.igf.ids.IdentityDirectory ids = idstoreService.getIdentityStore(); } catch (Exception e) { e.printStackTrace() }
関連項目: