1.3項「Oracle Entitlements Serverのアーキテクチャの概要」で説明しているように、ポリシー情報ポイント(PIP)は、属性値のソースとして機能するシステム・エンティティです。Oracle Entitlements Serverは、1つ以上のこれらのPIP情報ストアから属性値を取得するために、属性リトリーバ・プラグインに依存しています。事前定義済属性リトリーバは、Oracle Entitlements Serverに同梱されています。この章では、これらの事前定義済属性リトリーバおよび関連する構成要件について説明します。この章には次の項目があります。
|
注意: カスタム属性リトリーバ、およびカスタム属性リトリーバを使用する場合のOracle Entitlements Serverの構成の詳細は、『Oracle Fusion Middleware Oracle Entitlements Server開発者ガイド』を参照してください。 |
Oracle Entitlements Serverには事前定義済属性リトリーバが含まれており、これは、Lightweight Directory Access Protocol (LDAP)データ・ストアおよびリレーショナル・データベース管理システム(RDBMS)に接続し、属性値を取得するのに使用されます。これらのプラグインは、追加のプログラミングを行わずに、システムに定義された1つ以上の属性を処理できます。これには、キャッシング機能およびフェイルオーバーも含まれています。
メモリー内キャッシュ・メカニズムは、Oracle Entitlements Serverと外部リポジトリ間の通信を減らすことでパフォーマンスを向上させるために使用されます。キャッシュは最大1000エントリを保持し、個々の属性に対して有効化できます。キャッシュ・サイズは構成できません。制限に達すると、キャッシュ項目はランダムに削除されます。例6-2は、cachedおよびttlプロパティが指定された個々の属性の定義を示します。
リポジトリ・フェイルオーバーも構成できます。属性への呼出しを受信すると、Oracle Entitlements Serverは、プライマリ・リポジトリがアクティブであるかどうかを確認します。アクティブな場合、値が取得されます。プライマリ・リポジトリがアクティブではない場合、すでに失敗しており、バックアップ・リポジトリがアクティブになります。後者の場合、Oracle Entitlements Serverは、(構成に基づいて)アクティブ・リポジトリへのスイッチ・バックのタイミングであるかどうかを確認します。スイッチ・バックのタイミングである場合、切替えが行われ、プライマリ・リポジトリから値が取得されます。構成された時間がまだ経過していない場合、アクティブなバックアップ・リポジトリから値が取得されます。
|
注意: プライマリ・リポジトリから値を取得中にエラーが発生した場合、Oracle Entitlements Serverは、アクティブなバックアップ・リポジトリが見つかるまで、バックアップ・リポジトリを1つずつ検索します。 |
構成情報については、6.2.3項「事前定義済属性リトリーバの個々の属性の構成」を参照してください。
これらの属性リトリーバの構成情報は、jps-config.xml構成ファイルで定義されます。2つのタイプの情報(属性問合せ情報およびリポジトリ接続情報)を構成する必要があります。
リポジトリ接続情報は、データ・ストアに接続するために使用され、場所、JDBCドライバとURLまたはLDAP URL(いずれか該当するもの)、およびユーザー/資格証明情報が含まれます。この接続情報は、特定のリトリーバ・インスタンスに関連します。例6-1に示すように、リポジトリ接続情報は、jps-config.xmlの<serviceInstances>セクションで定義されます。
例6-1 属性リトリーバに定義されるリポジトリ接続情報
<serviceInstance name="policystore.rdbms" provider="policy.rdbms"> <property name="jdbc.url" value="jdbc:oracle:thin:@scl58116.us.oracle.com:1521:orcl"/> <property name="jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="bootstrap.security.principal.key" value="keyname"/> <property name="bootstrap.security.principal.map" value="mapname"/> <property name="oracle.security.jps.ldap.root.name" value="cn=jpsTestNode"/> <property name="oracle.security.jps.farm.name" value="cn=wcai_view_jing.atzsrg"/> </serviceInstance>
6.2.1項「LDAPリポジトリ属性リトリーバ・パラメータの構成」、6.2.2項「データベース・リポジトリ属性リトリーバ・パラメータの構成」、および6.3項「jps-config.xmlの変更」では、リポジトリ接続構成に関する情報が記載されています。
属性問合せ情報は、特定の属性に関連し、名前、使用する事前定義済属性リトリーバの名前、取得のための検索問合せ(たとえば、ストアがリレーショナル・データベースの場合はSQL問合せ、ストアがディレクトリの場合はLDAP問合せ)、および属性キャッシング情報が含まれます。例6-2に示すように、属性問合せ情報は、jps-config.xmlの<propertySets>セクションで定義されます。
例6-2 属性リトリーバに定義される属性問合せ情報
<propertySet name="ootb.pip.attribute.age.based.on.myattr.ldap">
<property name="ootb.pip.attr.type" value="OOTB_PIP_ATTRIBUTE"/>
<property name="ootb.pip.ref" value="pip.service.ootb.ldap"/>
<property name="name" value="oespipage_myattr"/>
<property name="query" value="(cn=%MyAttr%)"/>
<property name="cached" value="true"/>
<property name="ttl" value="60"/>
</propertySet>
6.2.3項「事前定義済属性リトリーバの個々の属性の構成」および6.3項「jps-config.xmlの変更」では、属性問合せ構成に関する情報が記載されています。
|
注意: これらの事前定義済属性リトリーバは、Oracle Database 11gR1、Oracle Internet Directory 11gR1、およびOracle Virtual Directory 11gR1で構成できます。 |
次の各項では、各タイプの属性リトリーバの構成パラメータの詳細を説明します。前述したように、これらのパラメータは、$DOMAIN_HOME/config/fmwconfigディレクトリにある(Java EEコンテナが使用する)構成ファイルであるjps-config.xml内にあります。
表6-1では、LDAP属性リトリーバを使用する場合に定義する必要があるパラメータについて説明します。構成のサンプル・コードは、例6-5「事前定義済LDAP属性リトリーバの使用」および例6-10「LDAPフェイルオーバーの構成」を参照してください。
表6-1 LDAP属性リトリーバ・パラメータ
| 名前 | 使用方法 |
|---|---|
|
name |
説明: 事前定義済属性リトリーバの名前 必須 許容値: 属性リトリーバのサービス・インスタンスを定義する文字列。 |
|
description |
説明: 事前定義済属性リトリーバの説明 オプション 許容値: 文字列 |
|
type |
説明: 事前定義済属性リトリーバのタイプ 必須 許容値: LDAP_PIP |
|
failed.server.retry.interval |
説明: プライマリ・リポジトリとの通信が失敗した後、この属性は、プライマリ・リポジトリにスイッチ・バックする前にバックアップ・リポジトリが使用されている時間間隔を定義します。 オプション 許容値: 秒数に等しい値を指定します。デフォルト値は15です。 |
|
bootstrap.security.principal.key |
説明: LDAPポリシー・ストアにアクセスするためのパスワード資格証明のキーを定義し、CSFストアに格納されています。JEEアプリケーションおよびJSEアプリケーションで有効です。LDAPストアおよびデータベース・ストアに適用します。6.4項「PIP接続資格証明の設定」を参照してください。 オプション: 本番モード用のみ。 許容値: 資格証明のキー名( |
|
bootstrap.security.principal.map |
説明: LDAPポリシー・ストアにアクセスするためのパスワード資格証明のマップを定義し、CSFストアに格納されています。JEEアプリケーションおよびJSEアプリケーションで有効です。LDAPストアおよびデータベース・ストアに適用します。6.4項「PIP接続資格証明の設定」を参照してください。 オプション: 本番モード用のみ。 許容値: 資格証明のマップ名( |
|
ldap.url |
説明: LDAPポリシー・ストアのURLを定義します。JEEアプリケーションおよびJSEアプリケーションで有効で、LDAPストアにのみ適用します。 必須 許容値: LDAPポリシー・ストアのURIで、形式は |
表6-2では、RDBMS属性リトリーバを使用する場合に定義する必要があるパラメータについて説明します。構成のサンプル・コードは、例6-6「JDBCでの事前定義済RDBMS属性リトリーバの使用」および例6-7「SQLでの事前定義済RDBMS属性リトリーバの使用」を参照してください。
表6-2 RDBMS属性リトリーバ・パラメータ
| 名前 | 使用方法 |
|---|---|
|
name |
説明: 事前定義済属性リトリーバの名前 必須 許容値: 属性リトリーバのサービス・インスタンスを定義する文字列。 |
|
description |
説明: 事前定義済属性リトリーバの説明 オプション 許容値: 文字列 |
|
type |
説明: 事前定義済属性リトリーバのタイプ 必須 許容値: RDBMS_PIP |
|
failed.server.retry.interval |
説明: プライマリ・リポジトリが失敗した後、この属性は、プライマリ・リポジトリにスイッチ・バックする前にバックアップ・リポジトリが使用されている時間間隔を特定します。 オプション 許容値: 秒数に等しい値を指定します。デフォルト値は15です。 |
|
bootstrap.security.principal.key |
説明: データベースにアクセスするためのパスワード資格証明のキーを定義し、CSFストアに格納されています。JEEアプリケーションおよびJSEアプリケーションで有効です。6.4項「PIP接続資格証明の設定」を参照してください。 オプション: 本番モード用のみ。 許容値: 資格証明のキー名( |
|
bootstrap.security.principal.map |
説明: データベースにアクセスするためのパスワード資格証明のマップを定義し、CSFストアに格納されています。JEEアプリケーションおよびJSEアプリケーションで有効です。6.4項「PIP接続資格証明の設定」を参照してください。 オプション: 本番モード用のみ。 許容値: 資格証明のマップ名( |
|
jdbc.driver |
説明: Java Database Connectivity (JDBC) APIを使用してデータベースに接続する場合のドライバの場所。 必須: JDBC APIを使用してデータベースに接続している場合。 許容値: |
|
jdbc.url |
説明: データベースを指すURLを指定します。 必須: JDBC APIを使用してデータベースに接続している場合。 許容値: カンマ区切りのURLのリスト。最初はプライマリなどとして処理されます。例: |
|
datasource.jndi.name |
説明: JDBCを直接介するのではなくデータ・ソースを介してPIPインスタンスを動作させる場合のデータ・ソースJNDI名。データ・ソース・シナリオは、WebLogic ServerおよびWebSphere Application Serverのみでサポートされます。 必須: JDBCを直接介するのではなくデータ・ソースを介してPIPインスタンスを動作させる場合。 許容値: 事前定義済データ・ソース・オブジェクトのJNDI名。 |
表6-3では、構成された属性リトリーバによって取得された各属性に定義されるパラメータについて説明します。構成のサンプルは、例6-9「属性のキャッシュの有効化」を参照してください。
表6-3 取得する属性の構成
| 名前 | 使用方法 |
|---|---|
|
name |
説明: ポリシー・ストアで定義されている属性の名前。LDAP事前定義済属性リトリーバを使用している場合、Oracle Entitlements Serverに定義される属性名は、LDAPストアで定義される属性名と同じである必要があります。現在、名前マッピング機能はありません。 必須 許容値: 属性名 |
|
query |
説明: 問合せに使用されるSQLコマンドまたはLDAPフィルタ。ユーザーは、問合せ文字列内の組込み属性およびカスタム属性を使用できます。たとえば、組込み属性 必須 許容値: SQLコマンドまたはLDAPフィルタ。 |
|
search.base |
説明: LDAP検索ベース。 必須: LDAP用のみ。 許容値: 検索ベース・オブジェクトのDN。 |
|
ttl |
説明: cachedが有効化されている場合、cached属性値の存続時間(秒)。 オプション 許容値: 任意の整数。cachedが有効化されている場合、デフォルト値は60秒です。 |
|
cached |
説明: 属性値のキャッシングを有効化します。 オプション 許容値: デフォルト値はfalseです。 |
|
ootb.pip.attr.type |
説明: OOTB_PIP_ATTRIBUTEに設定する必要があります。 必須 許容値: OOTB_PIP_ATTRIBUTE |
|
ootb.pip.ref |
説明: OOTB PIPインスタンスに設定する必要があります。 必須 許容値: |
jps-config.xml内で事前定義済属性リトリーバを構成するには、この項の各例で説明しているように、要素を変更します。例6-3は、jps-config.xmlファイルのサンプルです。これに続く各例は、行うことができる変更を示します。
例6-3 jps-config.xmlのサンプル・ファイル
<?xml version="1.0"?>
<jpsConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="
http://xmlns.oracle.com/oracleas/schema/jps-config-11_0.xsd">
<property name="oracle.security.jps.jaas.mode" value="off"/>
<property name="oracle.security.jps.enterprise.user.class"
value="weblogic.security.principal.WLSUserImpl"/>
<property name="oracle.security.jps.enterprise.role.class"
value="weblogic.security.principal.WLSGroupImpl"/>
<propertySets>
<!-- These are the global authenticated role properties -->
<propertySet name="authenticated.role.properties">
<property name="authenticated.role.name" value="authenticated-role"/>
<property name="authenticated.role.uniquename" value="authenticated-role"/>
<property name="authenticated.role.description"
value="This is the authenticated role used by identity store
service instance."/>
</propertySet>
<!-- attribute defined for ldap retriever -->
<propertySet name="ootb.pip.attribute.age.ldap">
<property name="ootb.pip.attr.type" value="OOTB_PIP_ATTRIBUTE"/>
<property name="ootb.pip.ref" value="pip.service.ootb.ldap"/>
<property name="name" value="oespipage"/>
<property name="query" value="(cn=%SYS_USER%)"/>
<property name="cached" value="true"/>
<property name="ttl" value="60"/>
</propertySet>
<propertySet name="ootb.pip.attribute.age.based.on.myattr.ldap">
<property name="ootb.pip.attr.type" value="OOTB_PIP_ATTRIBUTE"/>
<property name="ootb.pip.ref" value="pip.service.ootb.ldap"/>
<property name="name" value="oespipage_myattr"/>
<property name="query" value="(cn=%MyAttr%)"/>
<property name="cached" value="true"/>
<property name="ttl" value="60"/>
</propertySet>
<propertySet name="ootb.pip.attribute.gender.ldap">
<property name="ootb.pip.attr.type" value="OOTB_PIP_ATTRIBUTE"/>
<property name="ootb.pip.ref" value="pip.service.ootb.ldap"/>
<property name="name" value="oespipgender"/>
<property name="query" value="(oespipage=%oespipage%)"/>
<property name="cached" value="true"/>
<property name="ttl" value="60"/>
</propertySet>
<!-- attribute defined for rdbms retriever -->
<propertySet name="ootb.pip.attribute.age.rdbms">
<property name="ootb.pip.attr.type" value="OOTB_PIP_ATTRIBUTE"/>
<property name="ootb.pip.ref" value="pip.service.ootb.db"/>
<property name="name" value="oespipage"/>
<property name="query" value="select oespipage
from pip_info_store where username=%SYS_USER%"/>
<property name="cached" value="true"/>
<property name="ttl" value="60"/>
</propertySet>
<propertySet name="ootb.pip.attribute.age.based.on.myattr.rdbms">
<property name="ootb.pip.attr.type" value="OOTB_PIP_ATTRIBUTE"/>
<property name="ootb.pip.ref" value="pip.service.ootb.db"/>
<property name="name" value="oespipage_myattr"/>
<property name="query" value="select oespipage
as oespipage_myattr from pip_info_store where username=%MyAttr%"/>
<property name="cached" value="true"/>
<property name="ttl" value="60"/>
</propertySet>
<propertySet name="ootb.pip.attribute.gender.rdbms">
<property name="ootb.pip.attr.type" value="OOTB_PIP_ATTRIBUTE"/>
<property name="ootb.pip.ref" value="pip.service.ootb.db"/>
<property name="name" value="oespipgender"/>
<property name="query" value="select oespipgender
from pip_info_store where oespipage=%oespipage%"/>
<property name="cached" value="true"/>
<property name="ttl" value="60"/>
</propertySet>
</propertySets>
<serviceProviders>
<serviceProvider type="CREDENTIAL_STORE" name="credstoressp"
class="oracle.security.jps.internal.credstore.ssp.
SspCredentialStoreProvider">
<description>SecretStore-based CSF Provider</description>
</serviceProvider>
<serviceProvider class="oracle.security.jps.az.
internal.runtime.provider.PIPServiceProvider"
name="pip.service.provider" type="PIP"/>
<serviceProvider type="POLICY_STORE" name="policy.rdbms"
class="oracle.security.jps.internal.policystore.
OPSSPolicyStoreProvider">
<property name="policystore.type" value="DB_ORACLE"/>
<description>DBMS based PolicyStore</description>
</serviceProvider>
<serviceProvider name="pdp.service.provider" type="PDP"
class="oracle.security.jps.az.internal.
runtime.provider.PDPServiceProvider">
<description>OPSS Runtime PDP Service Provider</description>
</serviceProvider>
<serviceProvider name="idstore.xml.provider" type="IDENTITY_STORE"
class="oracle.security.jps.internal.idstore.
xml.XmlIdentityStoreProvider">
<description>XML-based IdStore Provider</description>
</serviceProvider>
<serviceProvider name="jaas.login.provider" type="LOGIN"
class="oracle.security.jps.internal.
login.jaas.JaasLoginServiceProvider">
<description>This is Jaas Login Service Provider and is used
to configure login module service instances</description>
</serviceProvider>
<serviceProvider name="policy.xml" type="POLICY_STORE"
class="oracle.security.jps.internal.
policystore.xml.XmlPolicyStoreProvider">
<description>XML-based PolicyStore</description>
</serviceProvider>
<serviceProvider type="POLICY_STORE" name="policy.oid"
class="oracle.security.jps.internal.
policystore.ldap.LdapPolicyStoreProvider">
<description>LDAP-based PolicyStore</description>
<property name="policystore.type" value="OID"/>
<property name="connection.pool.maxsize" value="30"/>
<property name="connection.pool.provider.type" value="idmpool"/>
</serviceProvider>
<serviceProvider type="AUDIT" name="audit.provider"
class="oracle.security.jps.internal.audit.AuditProvider">
<description>Audit Service</description>
</serviceProvider>
</serviceProviders>
<serviceInstances>
<serviceInstance name="credstore" provider="credstoressp" location="./">
<description>File Based Credential Store Service Instance</description>
</serviceInstance>
<serviceInstance name="idstore.xml" provider="idstore.xml.provider">
<!-- Subscriber name must be defined for XML Identity Store -->
<property name="subscriber.name" value="jazn.com"/>
<!-- This is the location of XML Identity Store -->
<property name="location" value="./user-data.xml"/>
<!-- This property set defines the authenticated role -->
<propertySetRef ref="authenticated.role.properties"/>
</serviceInstance>
<serviceInstance name="idstore.loginmodule"
provider="jaas.login.provider">
<description>Identity Store Login Module</description>
<property name="loginModuleClassName" value="oracle.security.jps.internal.
jaas.module.idstore.IdStoreLoginModule"/>
<property name="jaas.login.controlFlag" value="REQUIRED"/>
<property name="debug" value="true"/>
<property name="addAllRoles" value="true"/>
</serviceInstance>
<serviceInstance name="policystore.rdbms" provider="policy.rdbms">
<property name="jdbc.url"
value="jdbc:oracle:thin:@scl58116.us.oracle.com:1521:orcl"/>
<property name="jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="bootstrap.security.principal.key" value="keyname"/>
<property name="bootstrap.security.principal.map" value="mapname"/>
<property name="oracle.security.jps.ldap.root.name"
value="cn=jpsTestNode"/>
<property name="oracle.security.jps.farm.name"
value="cn=wcai_view_jing.atzsrg"/>
</serviceInstance>
<serviceInstance name="policystore.rdbms.ds" provider="policy.rdbms">
<property name="oracle.security.jps.ldap.root.name"
value="cn=jpsTestNode"/>
<property name="oracle.security.jps.farm.name"
value="cn=wcai_view_jing.atzsrg"/>
<property value="atzsrgds" name="datasource.jndi.name"/>
</serviceInstance>
<serviceInstance name="pdp.service" provider="pdp.service.provider">
<property name="oracle.security.jps.runtime.pd.client.sm_name"
value="${atzsrg.pdp.configuration_id}"/>
<property name="oracle.security.jps.pdp.
AuthorizationDecisionCacheEnabled" value="true"/>
<property name="oracle.security.jps.pdp.
AuthorizationDecisionCacheEvictionCapacity" value="500"/>
<property name="oracle.security.jps.pdp.
AuthorizationDecisionCacheEvictionPercentage" value="10"/>
<property name="oracle.security.jps.pdp.
AuthorizationDecisionCacheTTL" value="60"/>
<property name="oracle.security.jps.ldap.
policystore.refresh.interval" value="30000"/>
<property name="oracle.security.jps.policystore.
refresh.purge.timeout" value="600000"/> <!-- 10 minutes -->
<property name="loading_attribute_backward_compatible" value="false"/>
<!-- Properties for controlled mode PD -->
<property name="oracle.security.jps.runtime.
pd.client.policyDistributionMode" value="non-controlled"/>
<property name="oracle.security.jps.runtime.
instance.name" value="${atzsrg.pdp.instance_name}"/>
</serviceInstance>
<serviceInstance name="policystore.oid" provider="policy.oid">
<property name="max.search.filter.length" value="4096"/>
<property name="bootstrap.security.principal.key" value="keyname"/>
<property name="bootstrap.security.principal.map" value="mapname"/>
<property name="ldap.url" value="ldap://scl58126.us.oracle.com:3060"/>
<property name="oracle.security.jps.ldap.root.name"
value="cn=jpsTestNode"/>
<property name="oracle.security.jps.farm.name"
value="cn=wcai_view_jing.atzsrg"/>
<property name="oracle.security.jps.policystore.resourcetypeenforcementmode"
value="Lenient"/>
</serviceInstance>
<serviceInstance name="policystore.xml" provider="policy.xml"
location="./system-jazn-data.xml"/>
<serviceInstance name="user.authentication.loginmodule"
provider="jaas.login.provider">
<description>User Authentication Login Module</description>
<property name="loginModuleClassName"
value="oracle.security.jps.internal.
jaas.module.authentication.JpsUserAuthenticationLoginModule"/>
<property name="jaas.login.controlFlag" value="REQUIRED"/>
</serviceInstance>
<serviceInstance name="user.assertion.loginmodule"
provider="jaas.login.provider">
<description>User Assertion Login Module</description>
<property name="loginModuleClassName"
value="oracle.security.jps.internal.
jaas.module.assertion.JpsUserAssertionLoginModule"/>
<property name="jaas.login.controlFlag" value="REQUIRED"/>
</serviceInstance>
<serviceInstance name="pip.service.ootb.ldap" provider="pip.service.provider">
<property name="type" value="LDAP_PIP"/>
<property name="ldap.url" value="ldap://scl58126.us.oracle.com:3060"/>
<property name="bootstrap.security.principal.key" value="keyname"/>
<property name="bootstrap.security.principal.map" value="mapname"/>
<property name="search.base" value="cn=pip_info_store,
cn=wcai_view_jing.atzsrg,cn=JPSContext,cn=jpsTestNode"/>
<property name="failed.server.retry.interval" value="10"/>
</serviceInstance>
<!-- JPS Audit Service Instance-->
<serviceInstance name="audit" provider="audit.provider">
<property name="audit.filterPreset" value="None"/>
<property name="audit.maxDirSize" value ="0"/>
<property name="audit.maxFileSize" value ="104857600"/>
<property name="audit.loader.jndi" value="jdbc/AuditDB"/>
<property name="audit.loader.interval" value="15" />
<property name="audit.loader.repositoryType" value="File" />
</serviceInstance>
<serviceInstance name="pip.service.ootb.db" provider="pip.service.provider">
<property name="type" value="RDBMS_PIP"/>
<property name="jdbc.url"
value="jdbc:oracle:thin:@scl58116.us.oracle.com:1521:orcl"/>
<property name="jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="bootstrap.security.principal.key" value="keyname"/>
<property name="bootstrap.security.principal.map" value="mapname"/>
<property name="failed.server.retry.interval" value="10"/>
</serviceInstance>
<serviceInstance name="pip.service.ootb.db.ds" provider="pip.service.provider">
<property name="type" value="RDBMS_PIP"/>
<property value="atzsrgds" name="datasource.jndi.name"/>
<property name="failed.server.retry.interval" value="10"/>
</serviceInstance>
</serviceInstances>
<jpsContexts default="default">
<jpsContext name="default">
<serviceInstanceRef ref="policystore.oid"/>
<serviceInstanceRef ref="pdp.service"/>
<serviceInstanceRef ref="audit"/>
<serviceInstanceRef ref="idstore.xml"/>
<serviceInstanceRef ref="idstore.loginmodule"/>
<serviceInstanceRef ref="pip.service.ootb.ldap"/>
<serviceInstanceRef ref="pip.service.ootb.db"/>
</jpsContext>
<jpsContext name="smsec">
<serviceInstanceRef ref="credstore"/>
</jpsContext>
</jpsContexts>
</jpsConfig>
例6-4は、内部Oracle Entitlements Serverクラスを定義することによって、serviceProvider要素が事前定義済属性リトリーバの使用を定義する方法を示します。
例6-4 事前定義済属性リトリーバの宣言
<serviceProvider class="oracle.security.jps.az.internal.runtime.provider.PIPServiceProvider" name="pip.service.provider" type="PIP"/>
次の各例は、使用する事前定義済属性リトリーバのserviceInstance要素を変更する方法を示します。
例6-5は、事前定義済LDAP属性リトリーバを使用する場合にserviceInstance要素を変更する方法を示します。
例6-5 事前定義済LDAP属性リトリーバの使用
<serviceInstance name="pip.service.ootb.ldap" provider="pip.service.provider"> <property name="type" value="RDBMS_PIP"/> <property name="ldap.url" value="ldap://dadvmg0065.us.oracle.com:3080"/> <property name="bootstrap.security.principal.key" value="keyname"/> <property name="bootstrap.security.principal.map" value="mapname"/> <property name="failed.server.retry.interval" value="10"/> </serviceInstance>
次の2つの例は、事前定義済RDBMS属性リトリーバを使用する場合にserviceInstance要素を変更する方法を示します。例6-6は、Java Database Connectivity (JDBC) APIを使用する場合です。
例6-6 JDBCでの事前定義済RDBMS属性リトリーバの使用
<serviceInstance name="pip.service.ootb.db" provider="pip.service.provider">
<property name="type" value="RDBMS_PIP"/>
<property name="jdbc.url"
value="jdbc:oracle:thin:@scl58116.us.oracle.com:1521:orcl"/>
<property name="jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="bootstrap.security.principal.map" value="mapname"/>
<property name="bootstrap.security.principal.key" value="keyname"/>
<property name="failed.server.retry.interval" value="10"/>
</serviceInstance>
例6-7は、SQLデータベースを使用する場合です。
例6-7 SQLでの事前定義済RDBMS属性リトリーバの使用
<serviceInstance name="pip.service.ootb.db" provider="pip.service.provider">
<property name="type" value="RDBMS_PIP"/>
<property name="datasource.jndi.name" value="DB_RAC"/>
<property name="failed.server.retry.interval" value="10"/>
</serviceInstance>
例6-8は、jpsContext要素で事前定義済属性リトリーバ参照を宣言する方法を示します。このサンプルでは、事前定義済RDBMS属性リトリーバを定義しています。
例6-8 jpsContextでの事前定義済属性リトリーバの宣言
<jpsContext name="default">
<serviceInstanceRef ref="policystore.db"/>
<serviceInstanceRef ref="pdp.service"/>
<serviceInstanceRef ref="audit"/>
<serviceInstanceRef ref="idstore.xml"/>
<serviceInstanceRef ref="idstore.loginmodule"/>
<serviceInstanceRef ref="pip.service.ootb.db"/>
</jpsContext>
例6-9は、特定の属性値のキャッシングを構成する方法を示します。キャッシングは属性ごとに有効化されます。この例では、キャッシュ・レコードは60秒後に削除されます。
例6-9 属性のキャッシュの有効化
<propertySet name="ootb.pip.attribute.gender.ldap">
<property name="ootb.pip.attr.type" value="OOTB_PIP_ATTRIBUTE"/>
<property name="ootb.pip.ref" value="pip.service.ootb.ldap"/>
<property name="name" value="oespipgender"/>
<property name="query" value="(oespipage=%oespipage%)"/>
<property name="cached" value="true"/>
<property name="ttl" value="60"/>
</propertySet>
例6-10は、フェイルオーバー動作を構成する方法を示します。この例では、プライマリ接続はldap://dadvmg0065:3080で、バックアップ接続はldap://scl58123:3060です。失敗したサーバーの再試行間隔は10秒です。
例6-10 LDAPフェイルオーバーの構成
<serviceInstance name="pip.service.ootb.ldap" provider="pip.service.provider">
<property name="type" value="LDAP_PIP"/>
<property name="ldap.url"
value="ldap://dadvmg0065:3080,ldap://scl58123:3060"/>
<property name="bootstrap.security.principal.key" value="keyname"/>
<property name="bootstrap.security.principal.map" value="mapname"/>
<property name="failed.server.retry.interval" value="10"/>
</serviceInstance>
表6-1「LDAP属性リトリーバ・パラメータ」および表6-2「RDBMS属性リトリーバ・パラメータ」に示すように、bootstrap.security.principal.keyおよびbootstrap.security.principal.mapパラメータは、データ・ストアにアクセスするためのキーおよびマップ(それぞれ)を定義します。Oracle Entitlements Serverには、ブートストラップ資格証明ストアにこれらのLDAPおよびデータベース接続資格証明を設定するoesPassword.shが付属しています。ツールは、$OES_SM_INSTANCE_DIRECTORY/bin/ディレクトリにあります。次のコマンドを使用して実行します。
./oesPassword.sh -setpass
セキュリティ・プリンシパルのキー名、セキュリティ・プリンシパルのマップ名、ユーザー名および関連するパスワードの入力が求められます。