ヘッダーをスキップ
Oracle® Fusion Middlewareアプリケーション・セキュリティ・ガイド
11gリリース1(11.1.1)
B56235-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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

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

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

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

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

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

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

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

図7-1は、アイデンティティ・ストア・サービスのアーキテクチャを示しています。構成に応じて、サービスは次のものをサポートします:

  • 1つ以上のLDAPサーバー

  • XMLファイル

これらをアイデンティティ・ストアとしてサポートします。

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

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

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

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

アイデンティティ・ストア・サービスは、次のサーバーをサポートしています。

  • Oracle WebLogic Server

  • サード・パーティのアプリケーション・サーバー

サービスの構成内容は、アプリケーション・サーバーによって異なるため、そのサービスをサポートするプロバイダを指定する必要があります。

7.1.4 Java SEのサポート

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

詳細は、第7.3.5項「Java SE環境」を参照してください。

7.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>

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

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

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

7.3.1 構成内容

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

7.3.1.1 複数のLDAP検索の構成

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

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

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

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

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

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

表7-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

グローバル値が明示的に指定されている場合に使用


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

前述のように、このパラメータはバックエンドLDAPストアに固有のものです。詳細は、次を参照してください。

7.3.2 WebLogic Serverにおける構成

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

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

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

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

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

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

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

続いて、Fusion Middleware Controlで次の手順を実行します。

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

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

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

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

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

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

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

    Property Name=virtualize
    Value=true
    

    注意:

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

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

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

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

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

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

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

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

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

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

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

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

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

7.3.2.5 サーバーの再起動

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

7.3.2.6 構成ファイルの例

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

例7-1 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>

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

例7-2 Oracle WebLogic Serverにおける複数のLDAP構成

<jpsConfig xmlns="http://xmlns.oracle.com/oracleas/schema/11/jps-config-11_1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.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 i.e., 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=oracle,dc=com</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>group.create.bases</name>
                <values>
                  <value>cn=groups_front,dc=us,dc=oracle,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要素を使用することにより、フロントエンド・パラメータを設定できます。

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

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

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

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

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

このセクションの構成は次のとおりです。

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

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

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

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

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

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

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

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

<jpsConfig xmlns="http://xmlns.oracle.com/oracleas/schema/11/jps-config-11_1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.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=oracle,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://oid1.us.oracle.com:389,ldap://oid2.us.oracle.com:389"/>
            <extendedProperty>
                <name>user.search.bases</name>
                <values>
                   <value>cn=users,dc=us,dc=oracle,dc=com</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>group.search.bases</name>
                <values>
                  <value>cn=groups,dc=us,dc=oracle,dc=com</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>username.attr</name>
                <values>
                  <value>uid</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>groupname.attr</name>
                <values>
                  <value>cn</value>
                </values>
            </extendedProperty>
            </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=oracle,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://msad1.us.oracle.com:389,ldap://msad2.us.oracle.com:389"/>
            <extendedProperty>
                <name>user.search.bases</name>
                <values>
                   <value>cn=users,dc=us,dc=oracle,dc=com</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>group.search.bases</name>
                <values>
                  <value>cn=groups,dc=us,dc=oracle,dc=com</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>username.attr</name>
                <values>
                  <value>cn</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>groupname.attr</name>
                <values>
                  <value>cn</value>
                </values>
            </extendedProperty>
             </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 i.e., 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=oracle,dc=com</value>
                </values>
            </extendedProperty>
            <extendedProperty>
                <name>group.create.bases</name>
                <values>
                  <value>cn=groups_front,dc=us,dc=oracle,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要素を使用することにより、フロントエンド・パラメータを設定できます。

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

7.3.5 Java SE環境

Java SE環境では、次のようにjps-config.xmlファイルを直接変更します。

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

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

  • アイデンティティ・ストア・サービスの「virtualize」フラグを有効にするには、例7-3を参照してください。

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

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

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

例7-4 プログラムによる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
        //
 } catch (Exception e) {
  e.printStackTrace()
}

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

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