| Oracle® Fusion Middleware Oracle Platform Security Servicesによるアプリケーションの保護 12c (12.2.1.2.0) E82689-01 |
|
![]() 前 |
![]() 次 |
この章では、アイデンティティ・ストアを構成および使用する方法と、プログラムで問い合せる方法について説明します。
この章の内容は次のとおりです。
|
関連項目: 『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サービス・インスタンスの構成を示します。
<!-- 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>
virtualizeプロパティを設定できない場合は、複数のLDAPに問い合せて、WebLogic Serverの構成をオーバーライドするようにサービスを構成できます。複数のLDAPを指定するには、LDAP URLのカンマ区切りリストを使用します。
<property name="ldap.url", value="ldap://host1:port1,ldap://host2:port2"/>
Fusion Middleware Controlを使用して複数のLDAPに対するサービスを構成するには、次の手順を実行します。
左側のナビゲーション・ペインでドメインを選択します。
「セキュリティ」→「セキュリティ・プロバイダ構成」に移動します。
ページの「アイデンティティ・ストア・プロバイダ」セクションを開きます。
「構成」をクリックします。
「アイデンティティ・ストア構成」ページが表示されます。
「カスタム・プロパティ」で「追加」をクリックします。
新しいプロパティを追加します。
Property Name=virtualize Value=true
このプロパティは、OPSS構成ファイルのデフォルト・コンテキストのサービス・インスタンスにも必ず追加します。
「OK」をクリックします。
WLSTを使用して仮想化を構成および使用するには、次の手順を実行します。
対象ドメインの管理サーバーに接続するためのスクリプト・ファイルを作成します。この操作についてuserName、userPass、localHostおよびportNumberを指定する必要があります。スクリプトを使用したサービスの構成の詳細は、「スクリプトを使用したサービスの構成」を参照してください。
$ORACLE_HOME/common/binに移動します。
wlst.shを実行します。
たとえば、ドメイン構成ファイルにidstore.ldap認証プロバイダが含まれている場合、次のコマンドで複数のLDAP検索用にプロバイダを構成します。
wlst.sh /tmp/updateServiceInsta, nceProperty.py -si idstore.ldap
-key "virtualize" -value "true"
WLSTを使用してアダプタ・タイムアウトを設定するには、次の手順を実行します。
listAdaptersコマンドを実行して、アダプタのリストを取得します。
modifyLDAPAdapterコマンドを実行して、アダプタごとにタイムアウト(たとえば120秒)を設定します。
modifyLDAPAdapter('<ADAPTER NAME>', 'OperationTimeout', 120000)
WebLogic Serverを再起動します。
|
関連項目: 『インフラストラクチャ・セキュリティWLSTコマンド・リファレンス』のmodifyLDAPAdapterに関する項 |
必要に応じて、jps-config.xmlファイルの構成を更新して、「アイデンティティ・ストアのパラメータ」に記載されている問合せパラメータを設定します。これらのパラメータはオプションであり、デフォルト値があります。
複数のLDAPへの問合せを構成したら、Weblogic管理サーバーおよび管理対象サーバーを再起動します。
次の例では、単一の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を使用したセキュリティ・プロバイダの構成」を参照してください。
Java SEアプリケーションの場合、構成はすべてjps-config-jse.xmlファイルに設定します。必要に応じて、このファイルを次のように編集します。
新しいサービス・インスタンスを定義します。
新しいサービス・インスタンスをコンテキストに追加して、事前に定義されているインスタンスを置き換えます。
virtualizeを有効にします。
アイデンティティ・ストアにプログラムで問い合せるには、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()
}
アイデンティティ・ストアとLDAPサーバーの間ではSecure Sockets Layer (SSL)接続を使用できます。アイデンティティ・ディレクトリAPIとユーザーおよびロールAPIのいずれも、複数のLDAPで動作できます。
アイデンティティ・ストアへの接続がWebLogic Serverのクライアントから始まる場合、SSL構成はサーバーで処理されます。