プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Platform Security Servicesによるアプリケーションの保護
12c (12.2.1.1.0)
E77301-01
  目次へ移動
目次

前
 
次
 

8 アイデンティティ・ストアの構成

この章では、アイデンティティ・ストアを構成および使用する方法と、プログラムで問い合せる方法について説明します。

この章の内容は次のとおりです。


関連項目:

『Identity Governance Framework開発者ガイド』のIdentity Directory Serviceについてに関する項


8.1 アイデンティティ・ストアについて

アイデンティティ・ストアには、ユーザーとグループの他、そのデータを問い合せることができるサービスが格納されます。デフォルトでは、単一のLDAPアイデンティティ・ストアへの問合せがサポートされます。1つのみではなく、複数のLDAPアイデンティティ・リポジトリに問い合せることが可能になる仮想アイデンティティ・ストアを使用するようにサービスを構成できます。アイデンティティ仮想化の詳細は、第8.3項「アイデンティティ・ストアの構成」を参照してください。

構成に応じて、サービスではファイルまたは(1つ以上の) LDAPサーバーをアイデンティティのリポジトリとして使用します。LDAP用にサービスを構成すると、デフォルトでは単一のLDAPに問い合せますが、複数のLDAPに問い合せるようにサービスを構成することもできます。

サービスは、Java SE環境で使用できます。Java SEアプリケーションでの仮想化の詳細は、第8.3.5項「Java SEアプリケーションでの仮想化の構成」を参照してください。

8.2 アイデンティティ・ストア・プロバイダの構成

アイデンティティ・ストアを使用する前に、アイデンティティ・ストア・プロバイダを構成する必要があります。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"/>

注意:

virtualizetrueに設定する場合は、user.login.attrプロパティとusername.attrプロパティは設定しないでください。

8.3 アイデンティティ・ストアの構成

次の各項では、アイデンティティ・ストアの構成方法について説明します。

8.3.1 アイデンティティ・ストアのパラメータ

次の各項では、アイデンティティ・ストアの構成パラメータの使用方法について説明します。

8.3.1.1 問合せパラメータ

次のパラメータを使用して、複数のLDAPへの問合せを構成します。

  • virtualizeプロパティ - このプロパティには、true (複数のLDAP検索)またはfalse (単一のLDAP検索)を設定できます。指定しない場合は、デフォルトのfalseに設定されます。

  • グローバル接続パラメータ(virtualizeプロパティが有効の場合) - コール元のアプリケーションではこれらのパラメータを使用して、グローバルLDAP構成(検索ベース、作成ベースなど)を指定します。これらのパラメータのいずれかを指定しない場合は、デフォルト値が使用されます。

  • バックエンド接続パラメータ - このパラメータは各LDAPストアに固有のものです。各LDAPに対して1セットのバックエンド・パラメータが指定されます。デフォルト値を上書きしない場合は、これらのパラメータを設定する必要がありません。

8.3.1.2 グローバル接続パラメータ

表8-1に、グローバル・パラメータを示します。接続プール・パラメータのリストは、『Identity Governance Framework開発者ガイド』の構成パラメータの理解を参照してください。

表8-1 LDAPアイデンティティ・ストアのグローバル・パラメータ

パラメータ デフォルト値

group.create.bases

user.create.basesと同じ

group.filter.object.classes

groupofuniquenames

group.mandatory.attrs

デフォルト値なし

group.member.attrs

uniquemember

group.object.classes

groupofuniquenames

group.search.bases

デフォルト値なし

group.selected.create.base

デフォルト値なし

group.selected.search.base

デフォルト値なし

groupname.attr

cn

max.search.filter.length

デフォルト値なし

search.type

デフォルト値なし

user.create.bases

認証プロバイダが1つしかない場合は、作成ベース値が使用されます。複数ある場合は、デフォルト値が設定されません。

user.filter.object.classes

inetorgperson

user.login.attr

uid

user.mandatory.attrs

デフォルト値なし

user.object.classes

inetorgperson

user.search.bases

group.search.basesと同じ

username.attr

cn


8.3.1.3 バックエンド接続パラメータ

これらのパラメータは特定のLDAPストアに固有のものです。

8.3.2 サービス構成の理解

LDAP認証プロバイダは、Oracle WebLogic Server管理コンソールまたはWebLogic Scripting Tool (WLST)を使用して構成します。実行時に、サーバーから構成の詳細がOPSSに渡されます。

WebLogic Serverドメインでは、指定したコンテキストで複数の認証プロバイダを構成できます。デフォルトでは、リストで最初の認証プロバイダを使用してアイデンティティ・ストアが初期化されます。認証プロバイダの詳細は、第3.2.1.1項「複数の認証プロバイダのサポート」を参照してください。

複数のLDAPに問い合せるには、virtualizeプロパティの設定が必要です。

次の各項では、いくつかの構成について説明します。

8.3.2.1 単一の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>

8.3.2.2 仮想化を指定しない複数のLDAP用のサービスの構成

virtualizeプロパティを設定できない場合は、複数のLDAPに問い合せて、WebLogic Serverの構成をオーバーライドするようにサービスを構成できます。複数のLDAPを指定するには、LDAP URLのカンマ区切りリストを使用します。

<property name="ldap.url", value="ldap://host1:port1,ldap://host2:port2"/>

8.3.2.3 Fusion Middleware Controlを使用した複数のLDAP用のサービスの構成

Fusion Middleware Controlを使用して複数のLDAPに対するサービスを構成するには、次の手順を実行します。

  1. 左側のナビゲーション・ペインでドメインを選択します。

  2. 「セキュリティ」→「セキュリティ・プロバイダ構成」に移動します。

  3. ページの「アイデンティティ・ストア・プロバイダ」セクションを開きます。

  4. 「構成」をクリックします。

  5. 「アイデンティティ・ストア構成」ページが表示されます。

  6. 「カスタム・プロパティ」で「追加」をクリックします。

  7. 新しいプロパティを追加します。

    Property Name=virtualize
    Value=true
    

    このプロパティは、OPSS構成ファイルのデフォルト・コンテキストのサービス・インスタンスにも必ず追加します。

  8. 「OK」をクリックします。

8.3.2.4 WLSTを使用したサービスの構成

WLSTを使用して仮想化を構成および使用するには、次の手順を実行します。

  1. 対象ドメインの管理サーバーに接続するためのスクリプト・ファイルを作成します。この操作についてuserNameuserPasslocalHostおよびportNumberを指定する必要があります。スクリプトを使用したサービスの構成の詳細は、付録Eの項「スクリプトを使用したサービスの構成」を参照してください。

  2. $ORACLE_HOME/common/binに移動します。

  3. wlst.shを実行します。

    たとえば、ドメイン構成ファイルにidstore.ldap認証プロバイダが含まれている場合、次のコマンドで複数のLDAP検索用にプロバイダを構成します。

    wlst.sh /tmp/updateServiceInsta, nceProperty.py -si idstore.ldap 
    -key "virtualize" -value "true"

8.3.2.5 WLSTを使用したタイムアウト設定の構成

WLSTを使用してアダプタ・タイムアウトを設定するには、次の手順を実行します。

  1. listAdaptersコマンドを実行して、アダプタのリストを取得します。

  2. modifyLDAPAdapterコマンドを実行して、アダプタごとにタイムアウト(たとえば120秒)を設定します。

    modifyLDAPAdapter('<ADAPTER NAME>', 'OperationTimeout', 120000)

  3. WebLogic Serverを再起動します。


関連項目:

『Oracle Fusion Middlewareインフラストラクチャ・セキュリティWLSTコマンド・リファレンス』のmodifyLDAPAdapter


8.3.2.6 その他のパラメータの構成

必要に応じて、jps-config.xmlファイルの構成を更新して、第8.3.1項「アイデンティティ・ストアのパラメータ」に記載されている問合せパラメータを設定します。これらのパラメータはオプションであり、デフォルト値があります。

8.3.2.7 サーバーの再起動

複数のLDAPへの問合せを構成したら、Weblogic管理サーバーおよび管理対象サーバーを再起動します。

8.3.2.8 単一および複数の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要素を使用すると、デフォルト値をオーバーライドするようにフロントエンド・パラメータを設定できます。


関連項目:

第8.3.1項「アイデンティティ・ストアのパラメータ」のフロントエンド・パラメータ


8.3.3 分割プロファイルの構成

アイデンティティ仮想化では分割プロファイルがサポートされており、アイデンティティ属性が複数のLDAPリポジトリに格納されている場合、その属性にアプリケーションでアクセスできます。

この機能には、付録I「ID仮想化のためのアダプタ構成」に記載されている追加構成が必要です。

8.3.4 カスタム認証プロバイダの構成

OPSSでは、アイデンティティへのアクセスにWebLogic認証プロバイダがサポートされています。使用可能なプロバイダが特定のLDAPサーバーに適合していない場合は通常、カスタマイズします。この項では、カスタム認証プロバイダを構成して使用する方法について説明します。

カスタムLDAP認証プロバイダを使用する場合に、次の構成では、jps-config.xmlidstore.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プロバイダ・インスタンスをオーバーライドするには、同様のエントリを挿入します。プロバイダ構成の詳細は、第9.6項「Fusion Middleware Controlを使用したセキュリティ・プロバイダの構成」を参照してください。

8.3.5 Java SEアプリケーションでの仮想化の構成

Java SEアプリケーションの場合、構成はすべてjps-config-jse.xmlファイルに設定します。必要に応じて、このファイルを次のように編集します。

  1. 新しいサービス・インスタンスを定義します。

  2. 新しいサービス・インスタンスをコンテキストに追加して、事前に定義されているインスタンスを置き換えます。

  3. virtualizeを有効にします。

8.4 プログラムによるアイデンティティ・ストアの問合せ

アイデンティティ・ストアにプログラムで問い合せるには、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() }

8.5 アイデンティティ・ストア用のSSLの構成

アイデンティティ・ストアとLDAPサーバーの間ではSecure Sockets Layer (SSL)接続を使用できます。アイデンティティ・ディレクトリAPIとユーザーおよびロールAPIのいずれも、複数のLDAPで動作できます。

アイデンティティ・ストアへの接続がWebLogic Serverのクライアントから始まる場合、SSL構成はサーバーで処理されます。