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

前
 
次
 

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

この章では、OPSSアイデンティティ・ストア・サービスの使用方法について説明します。アデンティティ・ストア・サービスを使用すると、ユーザーおよびロール(グループ)の情報を問い合せることができます。

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


関連項目:

『Identity Governance Framework開発者ガイド』のIdentity Directory Serviceに関する説明。

8.1 アイデンティティ・ストア・サービスの概要

この項では、OPSSアイデンティティ・ストア・サービスにおける次の主要概念について説明します。

8.1.1 アイデンティティ・ストア・サービスについて

アイデンティティ・ストア・サービスを使用すると、アイデンティティ・ストアにユーザーおよびロール(グループ)の情報を問い合せることができます。

デフォルトでは、サービス・インスタンスは、単一のLDAPアイデンティティ・ストアへの問合せをサポートしています。複数のLDAPアイデンティティ・ストアに問合せを行う仮想アイデンティティ・ストアをサポートするようにサービスを構成できます。ID仮想化として知られているこの機能の詳細は、第8.3項「アイデンティティ・ストア・サービスの構成」を参照してください。

8.1.2 サービス・アーキテクチャ

図8-1は、アイデンティティ・ストア・サービスのアーキテクチャを示しています。構成に応じて、サービスではアイデンティティ・ストアとして、XMLファイルまたは1つ以上のLDAPサーバーをサポートできます。

LDAP用にサービスを構成すると、デフォルトでは、単一のLDAPストアに問合せが行われます。複数のLDAPストアに問い合せるように、サービスを構成することもできます。

図8-1 OPSSアイデンティティ・ストア・サービス

図8-1については周囲のテキストで説明しています。

8.1.3 アプリケーション・サーバーのサポート

アイデンティティ・ストア・サービスは、次のプラットフォームでサポートされています。

  • Oracle WebLogic Server

8.1.4 Java SEのサポート

アイデンティティ・ストア・サービスは、スタンドアロンのJava SE環境で使用できます。

詳細は、第8.3.6項「Java SE環境での構成の定義」を参照してください。

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

アイデンティティ・ストア・サービスを使用する前に、アイデンティティ・ストア・プロバイダを構成する必要があります。OPSSでは、ファイルベース(XML)とLDAPベースの両方のプロバイダがサポートされます。

次のjps-config.xmlファイルの断片は、XMLプロバイダとLDAPプロバイダの構成を示しています。serviceProviderは、serviceProviders要素の子要素です。

<serviceProvider type="IDENTITY_STORE" name="idstore.ldap.provider" 
 class="oracle.security.jps.internal.idstore.ldap.LdapIdentityStoreProvider">
      <description>LDAP-based 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)をオーバーライドする必要がある場合、USERNAME_ATTRプロパティおよびUSER_LOGIN_ATTRプロパティをjps-config.xml (またはjps-config-jse.xml)のsAMAccountNameに設定します。例:

<property value="sAMAccountName" name="username.attr"/>
<property value="sAMAccountName" name="user.login.attr"/>

注意:

仮想化フラグをtrueに設定した場合はuser.login.attrusername.attrプロパティは設定しないでください。

詳細は、第9.7.2項「アイデンティティ・ストア・プロバイダの構成」を参照してください。

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

この項では、アイデンティティ・ストア・サービスをLDAPベースのストアに構成する方法について説明します。この項の内容は次のとおりです。

8.3.1 構成内容

この項では、アイデンティティ・ストア・サービスの各種構成パラメータについて説明します。内容は次のとおりです。

8.3.1.1 複数のLDAP検索の構成

複数のLDAP問合せ用にサービスを構成するには、次のパラメータを使用します。

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

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

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

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

表8-1は、グローバル・パラメータとそのデフォルト値(該当する場合)を示しています。

表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 WebLogic Serverの構成の理解

Oracle WebLogic Serverでは、LDAP認証プロバイダは、WebLogicコンソールまたはWLSTコマンドラインを使用して構成します。実行時にOracle WebLogic Serverによって構成の詳細がOPSSに渡されます。Oracle WebLogic Serverでは、特定のコンテキストで複数の認証プロバイダを構成することができます。また、アイデンティティ・ストア・サービスを初期化する際に、デフォルトでは、最初の認証プロバイダが選択されます。この処理については、第3.2.2.1項「複数の認証プロバイダ」で説明しています。

認証プロバイダを構成した後で、アイデンティティ・ストア・サービスを設定して、1つのLDAPアイデンティティ・ストアまたは複数のストアに問い合せることができます。複数のストアを構成するにはvirtualizeプロパティを設定する必要があります。

この項では、これらのオプションの設定方法について説明します。

8.3.2.1 単一のLDAPを使用する場合のサービスの構成

アイデンティティ・ストア・サービスを構成して、問合せ可能なLDAPストアは1つだけです。単一のLDAPサービス・インスタンスを使用する場合のjps-config.xmlファイルの断片を示している例8-2を参照してください。

8.3.2.2 virtualizeプロパティを指定せずに複数のLDAPを使用する場合のサービスの構成

virtualizeプロパティを設定できない場合は、複数のLDAPストアを問い合せて、WebLogic Serverの構成をオーバーライドするようアイデンティティ・ストア・サービスを構成できます。jps-config.xmlファイルの断片を示している例8-1を参照してください。この例では、LDAP URLのカンマ区切りリストを使用して複数のLDAPサービス・インスタンスが定義されています。

例8-1 virtualizeプロパティを設定しない複数のLDAPの構成

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

8.3.2.3 Fusion Middleware Controlによる複数のLDAPを使用する場合のサービスの構成

単一のLDAPの場合の設定に記載されているように、Oracle WebLogic Serverに認証プロバイダを構成して起動します。

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

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

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

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

  4. 「構成」をクリックします(「アイデンティティ・ストアと対話するユーザー/ロールAPIで使用するパラメータの構成」に相当)。

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

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

  7. 次のように、新しいプロパティを追加します。

    Property Name=virtualize
    Value=true
    

    注意:

    このプロパティは、デフォルト・コンテキストのアイデンティティ・ストアのサービス・インスタンスに追加してください。

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

8.3.2.4 WLSTによる複数のLDAPを使用する場合のサービスの構成

WLSTを使用してvirtualizeプロパティを構成するには、次の手順を実行します。

  1. 対象ドメインの管理サーバーに接続するためのpyスクリプト・ファイルを作成します。この操作で使用するuserNameuserPasslocalHostportNumberを指定する必要があります。

    このスクリプトの詳細は、付録E「スクリプトを使用したOPSSサービス・プロバイダ・インスタンスの構成」を参照してください。

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

  3. wlst.shコマンドを実行して、スクリプトを実行します。

    たとえば、idstore.ldapという名前の認証プロバイダがドメイン構成ファイルに含まれている場合、次のようにコマンドを入力します。

    wlst.sh /tmp/updateServiceInstanceProperty.py -si idstore.ldap 
    -key "virtualize" -value "true"

    複数のLDAP検索に使用するプロバイダが構成されます。

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

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

  1. 次のWLSTコマンドを実行し、すべてのアダプタをリストします。listAdapters()

  2. 次のWLSTコマンドを実行して、アダプタごとにタイムアウトを設定します。たとえば、120秒のタイムアウトを設定します。タイムアウトなしの場合はゼロに設定します。

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

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

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

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

8.3.2.7 サーバーの再起動

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

8.3.2.8 構成ファイルの表示

例8-2に、単一のLDAP問合せ用にOracle WebLogic Server環境に構成されたjps-config.xmlのサンプル・ファイルを示します。

例8-2 Oracle WebLogic Serverにおける単一の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に、複数のLDAP問合せ用にOracle WebLogic Server環境に構成されたjps-config.xmlのサンプル・ファイルを示します。

例8-3 Oracle WebLogic Serverにおける複数のLDAP構成

<jpsConfig xmlns="http://xmlns.example.com/oracleas/schema/11/jps-config-11_1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.example.com/oracleas/schema/11/jps-config-11_1.xsd" schema-major-version="11" schema-minor-version="1">
 
 <serviceProviders>
        <serviceProvider type="IDENTITY_STORE" name="idstore.ldap.provider" 
                 class="oracle.security.jps.internal.idstore.ldap.LdapIdentityStoreProvider">
            <description>LDAP-based IdentityStore Provider</description>
        </serviceProvider>
 </serviceProviders>
 
 <serviceInstances>
        <!-- IDstore instance connecting to multiple ldap  -->
        <serviceInstance name="idstore.virtualize" provider="idstore.ldap.provider">
 
            <!-- following property indicates using WLS ldap Authenticators -->
            <property name="idstore.config.provider" 
                 value="oracle.security.jps.wls.internal.idstore.WlsLdapIdStoreConfigProvider"/>
 
             <!-- following property enables virtualization that is, support for multiple stores -->
            <property name="virtualize" value="true"/>
 
            <!-- Front end ldap properties (if not supplied, will use 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>

次のことに留意してください:

  • 複数のLDAP問合せを有効にするために、サービス・インスタンスのvirtualizeプロパティをtrueに設定します。

  • 必要に応じて、デフォルト値をオーバーライドする場合は、extendedProperty要素を使用することにより、フロントエンド・パラメータを設定できます。

    詳細は、第8.3.1項「構成内容」の「フロントエンド・パラメータ」を参照してください。

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

ID仮想化では「分割プロファイル」がサポートされています。分割プロファイルでは、2つの異なるソースに格納されている単一IDの属性をアプリケーションが使用します。

この機能には、この章で説明している構成以外に追加構成が必要です。詳細は、付録I「ID仮想化のためのアダプタ構成」を参照してください。

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

OPSSでは、アイデンティティ・ストアにアクセスするための、複数のLDAPベースのOracle WebLogic Server認証プロバイダ(WebLogic認証プロバイダ)がサポートされています。出荷時に設定されているWebLogic認証プロバイダがLDAPサーバー・タイプに適していない場合は、このタスク用に汎用の認証プロバイダをカスタマイズできます。

この項では、アイデンティティ・ストア・サービスに対してvirtualizeフラグが有効になっている場合に、このような認証プロバイダを構成する方法について説明します。

このコンテキストでは、次の点に注意してください。

  • 汎用のLDAP認証プロバイダの使用時には、適切なLDAPプラグインを見つけられるように、アイデンティティ・ストア・サービスに対して正確なLDAPタイプを指定する必要があります。これは、jps-config.xml内のidstore.typeプロパティをオーバーライドすることにより行います。

  • 'virtualize'フラグが有効になっており、Oracle WebLogic Serverドメインに複数の認証プロバイダがあるため(たとえば、defaultAuthenticatorと汎用のLDAP)、アイデンティティ・ストア・サービスに対して、どのLDAPサーバーの'idstore.type'をオーバーライドすべきかを指定する必要があります。

この情報は、jps-config.xml内で次のように指定します。

<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" />
 
    <!-- the following refer to the Generic ldap name configured on the WLS
authenticator provider, you get this name from WebLogic config.xml file or admin
console  -->
    <serviceInstanceRef ref="myGenericLDAPName"/>
 
  </serviceInstance>
 
 
  <!-- the following provide the overriding to the Generic ldap (e.g. AD)
-->
  <!-- "myGenericLDAPName" is the name used on WLS for the generic LDAP
authenticator provider  -->
  <serviceInstance name="myGenericLDAPName" provider="idstore.ldap.provider">
 
    <!-- the following overrides the 'idstore.type' property to
"ACTIVE_DIRECTORY" -->
    <property name="idstore.type" value="ACTIVE_DIRECTORY" />
  </serviceInstance>

別のLDAPプロバイダ・インスタンスもオーバーライドする必要がある場合は、ファイルに同様のエントリを追加します。

8.3.5 その他のアプリケーション・サーバーの構成の理解

この項のトピックは次のとおりです:

8.3.5.1 単一のLDAPを使用する場合のサービスの構成

詳細は、第25.3.2項「Java SEアプリケーションでのLDAPアイデンティティ・ストアの構成」の例を参照してください。

8.3.5.2 複数のLDAPを使用する場合のサービスの構成

サード・パーティのアプリケーション・サーバーにある複数のLDAPに対応するアイデンティティ・ストア・サービスを構成する手順は、次のとおりです。

  1. jps-config.xmlファイルを変更して、LDAP対応のディレクトリごとにサービスのインスタンスを構成します。

  2. アプリケーション・サーバーを再起動して、変更を有効にします。

例8-4に、サード・パーティのアプリケーション・サーバーに複数のLDAP問合せを実行するように構成されたjps-config.xmlファイルのサンプルを示します。

例8-4 サード・パーティのアプリケーション・サーバーにおける複数のLDAP構成

<jpsConfig xmlns="http://xmlns.example.com/oracleas/schema/11/jps-config-11_1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.example.com/oracleas/schema/11/jps-config-11_1.xsd" schema-major-version="11" schema-minor-version="1">
 
 <serviceProviders>
        <serviceProvider type="IDENTITY_STORE" name="idstore.ldap.provider"                     
                class="oracle.security.jps.internal.idstore.ldap.LdapIdentityStoreProvider">
            <description>LDAP-based IdentityStore Provider</description>
        </serviceProvider>
 </serviceProviders>
 
 <serviceInstances>
          <!-- instance 'idstore.oid'  to represent an ldap server 'oid' -->
            <serviceInstance name="idstore.oid" provider="idstore.ldap.provider">
            <property name="subscriber.name" value="dc=us,dc=example,dc=com"/>
            <property name="idstore.type" value="OID"/>
            <property name="security.principal.key" value="oid.ldap.credentials"/>
            <property name="security.principal.alias" value="JPS"/>
            <property name="ldap.url" 
                value="ldap://hostname.example.com:389,ldap://hostname.example.com:389"/>
            <extendedProperty>
                <name>user.search.bases</name>
                <values>
                   <value>cn=users,dc=us,dc=example,dc=com</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>group.search.bases</name>
                <values>
                  <value>cn=groups,dc=us,dc=example,dc=com</value>
                </values>
            </extendedProperty>
            <property name="username.attr" value="uid" />
            <property name="groupname.attr" value="cn" />
            </serviceInstance>
 
          <!-- instance 'idstore.ad' to represent an ldap server 'ad' -->
            <serviceInstance name="idstore.ad" provider="idstore.ldap.provider">
            <property name="subscriber.name" value="dc=us,dc=example,dc=com"/>
            <property name="idstore.type" value="ACTIVE_DIRECTORY"/>
            <property name="security.principal.key" value="msad.ldap.credentials"/>
            <property name="security.principal.alias" value="JPS"/>
            <property name="ldap.url" 
                value="ldap://hostname.example.com:389,ldap://hostname.example.com:389"/>
            <extendedProperty>
                <name>user.search.bases</name>
                <values>
                   <value>cn=users,dc=us,dc=example,dc=com</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>group.search.bases</name>
                <values>
                  <value>cn=groups,dc=us,dc=example,dc=com</value>
                </values>
            </extendedProperty>
            <property name="username.attr" value="uid" />
            <property name="groupname.attr" value="cn" />
             </serviceInstance>
 
         <!-- IDStore service "idservice.virtualize" to connect to multiple ldaps ( 'oid' and 'ad') using libOVD-->
        <serviceInstance name="idservice.virtualize"          provider="idstore.ldap.provider">
 
             <!--following property enables virtualization that is, support for multiple stores -->
               <property name="virtualize" value="true"/>
               <!-- backend ldap instance "idstore.oid"-->     
                               <serviceInstanceRef ref="idstore.oid"/>
               <!-- backend ldap instance "idstore.ad"-->
                            <serviceInstanceRef ref="idstore.ad"/>    
            <!-- Front end ldap properties (if not supplied, will use 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">
 
        <!-- IdStore service connect to  multiple ldaps ('oid'+'ad') through libOVD-->
        <jpsContext name="default">
                <!-- use multiple ldaps ('oid'+'ad') through libOVD-->
            <serviceInstanceRef ref="idservice.virtualize"/>  
            <!-- .....other services -->
        </jpsContext>
 
  </jpsContexts>
 
</jpsConfig>

次のことに留意してください:

  • 最初のサービス・インスタンスは、Oracle Internet Directoryのプロバイダを定義しています。

  • 2番目のサービス・インスタンスは、Microsoft Active Directoryのプロバイダを定義しています。

  • 複数のLDAP問合せを有効にするために、サービス・インスタンスのvirtualizeプロパティをtrueに設定します。

  • 必要に応じて、デフォルト値をオーバーライドする場合は、extendedProperty要素を使用することにより、フロントエンド・パラメータを設定できます。

    詳細は、第8.3.1項「構成内容」の「フロントエンド・パラメータ」を参照してください。

8.3.6 Java SE環境での構成の定義

Java SE環境では、すべての構成がjps-config-jse.xmlファイルに設定されます。必要に応じて次を実行できます。

  1. 新しいアイデンティティ・ストアのサービス・インスタンスを定義します。

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

  3. アイデンティティ・ストア・サービスのvirtualizeフラグを有効にします。例8-4を参照してください。

詳細は、第25.3.2項「Java SEアプリケーションでのLDAPアイデンティティ・ストアの構成」を参照してください。

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

プログラム上でLDAPアイデンティティ・ストアに問い合せるには、OPSSを使用してJPSコンテキストを取得します(これは、ストア・インスタンスを取得するブリッジのように機能します)。続いて、ユーザーおよびロールAPIを使用して、ストアに問い合せます。

例8-5 プログラムによるLDAPアイデンティティ・ストアの問合せ

 try {
         //find the JPS context
         JpsContextFactory ctxFactory = JpsContextFactory.getContextFactory();
         JpsContext ctx = ctxFactory.getContext();
        
         //find the JPS IdentityStore service instance 
         //(assuming the backend 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(); // ref. chapter "Developing with the Identity Directory API" // on how to use IdentityDirectory } catch (Exception e) { e.printStackTrace() }

アイデンティティ・ストア・サービスの「virtualize」プロパティを有効にする方法を確認するには、例8-4を参照してください。

MBeansの使用方法の詳細は、第E.2項「MBeanを使用したOPSSサービスの構成」を参照してください。

8.5 アイデンティティ・ストア・サービス向けSSLの構成

アイデンティティ・ストアとLDAPサーバー間の接続に対してSSLを有効にできます。アイデンティティ・ディレクトリAPIとユーザーおよびロールAPIのどちらも、複数のLDAPアイデンティティ・ストア構成(デフォルト設定のvirtualize = true)で動作できます。この項では、仮想環境におけるアイデンティティ・ストアからLDAPサーバーへの接続でSSLを有効にする方法について説明します。

この項には次のトピックが含まれます:

8.5.1 Oracle WebLogic Serverからアイデンティティ・ストアへの接続

アイデンティティ・ストアへの接続がOracle WebLogic Server上のクライアントから始まる場合、SSLの構成はOracle WebLogic Serverで行います。詳細は、第9.2.2項を参照してください。

8.5.2 キーストア・サービスでのSSLの構成

キーストア・サービスで複数のLDAP SSLを使用する際に、ストア証明書は、ドメイン全体で一元的に格納されます。次のシナリオでは、キーストア・サービスWLSTコマンドを使用して、アイデンティティ・ストアからLDAPサーバーへのSSL通信を構成します。キーストア・サービスおよびWLSTコマンドの詳細は、第12章を参照してください。

JKSベースのキーストアでのSSLの構成の詳細は、第8.5.3項を参照してください。

この項では次の手順について説明します。

8.5.2.1 キーストア・サービスでの複数のLDAPシナリオでの一方向SSLの構成

複数のLDAPアイデンティティ・ストア構成で一方向SSL通信を有効にするには、次の手順を実行します。

  1. 適切なエクスポート・コマンドを使用して、LDAPディレクトリからストア証明書をエクスポートします。

  2. importKeyStoreCertificateコマンドを使用して、外部LDAPサーバーからドメイン全体で共有されているトラストストアにストア証明書をインポートします。例:

    svc.importKeyStoreCertificate(appStripe='system', name='trust', password='',
    alias='alias', keypassword='', type='TrustedCertificate',filepath='absolute
    _file_path')
    
    

    ここで、appStripe='system'name='trust'はドメイン・トラストストアです。

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

8.5.2.2 キーストア・サービスでの複数のLDAPシナリオでの双方向SSLの構成

複数のLDAPアイデンティティ・ストア構成で双方向SSL通信を有効にするには、次の手順を実行します。

  1. 適切なエクスポート・コマンドを使用して、LDAPディレクトリからストア証明書をエクスポートします。

  2. importKeyStoreCertificateコマンドを使用して、外部LDAPサーバーからドメイン全体で共有されているトラストストアに証明書をインポートします。例:

    svc.importKeyStoreCertificate(appStripe='system', name='trust', password='',
    alias='alias', keypassword='', type='TrustedCertificate',filepath='absolute
    _file_path')
    

    ここで、appStripe='system'name='trust'はドメイン・トラストストアです。

  3. appStripe='libovd', name='adapters'を指定してcreateKeyStoreコマンドを使用し、仮想化されたキーストアをキーストア・サービスに作成します。例:

    svc.createKeyStore(appStripe='libovd',name='adapters',password='',permission=true) 
    
  4. generateKeyPairコマンドを実行して、CAによって署名された新しいキー・ペアを生成します。例:

    svc.generateKeyPair(appStripe='libovd',name='adapters',password='',dn='cn=directory manager', keysize='1024',alias='alias',keypassword='')
    
  5. exportKeyStoreCertificateコマンドを使用して、この証明書をファイルにエクスポートします。例:

    svc.exportKeyStoreCertificate(appStripe='libovd',name='adapters',password='',alias='key1', type='Certificate', filepath='/tmp/cert.txt')
    
  6. 前述の手順で生成した証明書を、バックエンドLDAPサーバーにインポートします。

  7. DOMAIN_HOME/config/fmwconfig/ovd/defaultディレクトリ下のprovider.os_xmlファイルで、"property name="enabled" value="true""を"KSSKeyManager"に変更します。

  8. Oracle WebLogic Serverを再起動します。

8.5.2.3 JKSからKSSへの切替え

次の手順では、JKSを使用したLibOVDアダプタのSSL構成をKSSを使用したSSL構成に切替える方法を説明します。

KSS LibOVDに切替えるには、次の手順を実行します。

  1. 次の例にあるように、importKeyStoreコマンドを使用して、既存のLibOVD JKSストアからドメイン・トラストストアにバックエンドLDAP証明書をインポートします。

    importKeyStore(appStripe='system', name='trust', password='welcome1',
       aliases='alias_names_from_JKS', keypasswords='',type='JKS', 
       permission=true, filepath='DOMAIN_HOME/config/fmwconfig/ovd/<context_   name>/keystores/adapters.jks')
    
  2. ファイルDOMAIN_HOME/config/fmwconfig/ovd/<context_name>/provider.os_xmlを開き、次のように変更して、KSSを有効化します。

    • "provider name="KSSTrustManager"を見つけ、"enabled"を"true"に変更します。

    • "provider name="FileKeyManager"を見つけ、"enabled"を"false"に変更します。

    • "provider name="FileTrustManager"を見つけ、"enabled"を"false"に変更します。

  3. 以前、双方向SSLを使用していた場合は、次の手順を実行します。

    1. 次の例にあるように、createKeyStoreコマンドを使用して、KSSにLibOVDキーストアを作成します。

      createKeyStore(appStripe='libovd',name='adapters',password='myPass',permission=true)
      
    2. 次の例にあるように、importKeyStoreコマンドを使用して、あらかじめ生成しておいたキー・ペアをadapters.jksからLibOVDキーストアにインポートします。

      importKeyStore(appStripe='libovd', name='adapters', password='myPassw',
         aliases='alias_names_from_JKS', keypasswords='',type='JKS',    permission=true, filepath='DOMAIN_HOME/config/fmwconfig/ovd/default/keystores/adapters.jks')
      
    3. "KSSKeyManager"の"enabled"値を"true"に変更します。ファイルDOMAIN_HOME/config/fmwconfig/ovd/<context_name>/provider.os_xmlを開き、KSSKeyManagerを見つけ、"enabled"を"true"に変更します。

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

8.5.3 JKSベースのキーストアでのSSLの構成

JKSベースのキーストアで複数のLDAP SSLを使用する際に、ストア証明書は複数の場所に保持されます。たとえば、WLS認証プロバイダが構成され、adapters.jksファイルに存在する場合は、WebLogic Serverトラストストアに保持されます。

表8-2を使用して、JKSベースのキーストアを使用する場合のSSLの構成に適したプロシージャを判別します。

表8-2 JKSベースのキーストアを使用したSSL

仮想化フラグ ユーザーおよびロールAPIの使用 アイデンティティ・ディレクトリ・サービスAPIの使用

virtualize=false (つまり仮想化フラグを設定しない)

第9.2.2項で説明しているように、JSSEパラメータを使用してトラストストアを指定します。

例:

-Djavax.net.ssl.trustStore=trust_store_path_name

第8.5.3.1項および第8.5.3.2項で示しているように、adapters.jksファイルを使用します。

virtualize=true (つまり、仮想化フラグを設定)。デフォルト設定は、virtualize=trueです。

第8.5.3.1項および第8.5.3.2項で示しているように、adapters.jksファイルを使用します。

第8.5.3.1項および第8.5.3.2項で示しているように、adapters.jksファイルを使用します。


8.5.3.1 JKSベースのキーストアを使用した複数のLDAPシナリオでの一方向SSLの構成

複数のLDAPアイデンティティ・ストア構成で一方向SSL通信を有効にするには、次の手順を実行します。


注意:

libovdconfig.shスクリプトを実行する前に、ORACLE_HOMEがoracle_commonディレクトリに設定されている必要があります。

  1. サービスが使用するLDAPサーバー証明書を格納するためのキーストアを作成します。WebLogic管理サーバーとキーストアの両方に対してパスワードを入力する必要があります。

    $MW_HOME/oracle_common/bin/libovdconfig.shスクリプトを使用し、-createKeystoreオプションを指定して、キーストアを作成します。

    libovdconfig.sh -host wls_host -port wls_adminserver_port -userName
    wls_user_name -domainPath full_path_domain_home -createKeystore
    

    説明:

    • hostはOracle WebLogic Serverホストです。

    • portはOracle WebLogic Serverの管理サーバーのポートです。

    • usernameはOracle WebLogic Serverの管理ユーザー名です。

    • domainPathはドメイン・ホームへの完全パスです。

  2. 適切なエクスポート・コマンドを使用して、LDAPディレクトリから証明書をエクスポートします。

  3. この証明書を、ステップ1で作成したキーストアにインポートします。

    keytoolコマンドを使用して、証明書をキーストアにインポートします。adapters.jksという名前のキーストアに対する構文は次のとおりです。

    $JAVA_HOME/bin/keytool -importcert 
    -keystore $DOMAIN_HOME/config/fmwconfig/ovd/default/keystores/adapters.jks 
    -storepass keystore_password_used_in_libovdconfig.sh 
    -alias alias_name 
    -file full_path_to_LDAPCert_file 
    -noprompt
    
  4. Oracle WebLogic Serverを再起動します。

8.5.3.2 JKSベースのキーストアを使用した複数のLDAPシナリオでの双方向SSLの構成

複数のLDAPアイデンティティ・ストア構成で双方向SSLを有効にするには、次の手順を実行します。

  1. 第8.5.3.1項の手順を実行します。

  2. 第8.5.3.1項のステップ1で作成したキーストアで、CAによって署名された新しいキー・ペアを生成します。

  3. この証明書をファイルにエクスポートします。

  4. 証明書をサーバーのキーストアにインポートします。