9 ICFコネクタの構成
この章では、すべてのICFコネクタに実行する必要のある一般的なカスタマイズ手順について説明します。
この章の内容は、次のとおりです。
9.1 コネクタ・ロード・バランサの構成
コネクタ・サーバーは、アイデンティティ・コネクタのリモート実行を可能にするアプリケーションです。コネクタ・サーバーが複数ある場合、アイデンティティ・コネクタのリモート実行およびフェイルオーバー管理用にコネクタ・サーバーの高可用性を確保する必要があります。したがって、コネクタ・サーバー用のロード・バランサを構成する必要があります。
この項の内容は次のとおりです。
9.1.1 ロード・バランサ構成について
コネクタ・サーバーが複数ある場合、アイデンティティ・コネクタのリモート実行およびフェイルオーバー管理用にコネクタ・サーバーの高可用性を確保する必要があります。
図9-1にコネクタ・サーバーのクラスタの一般的な構成を示します。図のフローは、必須のコネクタ・バンドルがすべてのコネクタ・サーバー間にデプロイされているという仮定に基づいています。
9.2 リコンシリエーションおよびプロビジョニング中のデータ検証の構成
リコンシリエーションおよびプロビジョニング中のデータ検証を構成するには、Javaクラスに検証ロジックを実装します。
この項の内容は次のとおりです。
9.2.1 リコンシリエーションおよびプロビジョニング中のデータ検証について
Lookup.CONNECTOR_NAME.ProvValidationsおよびLookup.CONNECTOR_NAME.UM.ReconValidations参照定義は、プロビジョニングおよびリコンシリエーション操作中に検証される単一値データを保持します。
たとえば、「名」属性からフェッチしたデータを検証して、そのデータに番号記号(#)が含まれていないことを確認します。また、プロセス・フォームの「名」フィールドに入力したデータを検証して、プロビジョニング操作中にターゲット・システムに番号記号(#)が送信されないようにします。
ノート:
Lookup.CONNECTOR_NAME.UM.ProvValidationsおよびLookup.CONNECTOR_NAME.UM.ReconValidations参照定義はオプションで、デフォルトでは存在しません。
これらの参照をデコード値としてLookup.CONNECTOR_NAME.UM.Configuration参照定義に追加して、プロビジョニングおよびリコンシリエーション操作中に除外を有効にする必要があります。ユーザー操作への参照定義の設定の詳細は、それぞれのコネクタ・ガイドを参照してください。
9.2.2 データ検証の構成
リコンシリエーションおよびプロビジョニング中のデータ検証を構成するには、検証クラスに検証メソッドを実装し、データ検証の参照定義を作成し、検証クラスJARファイルをデータベースにアップロードします。
データの検証を構成するには:
9.2.3 サンプル検証クラス
サンプル検証クラスに検証メソッドを実装できます。
次のサンプル検証クラスは、「名」属性の値に番号記号(#)が含まれるかどうかを確認します。
package com.validationexample; import java.util.HashMap; public class MyValidator { public boolean validate(HashMap hmUserDetails, HashMap hmEntitlementDetails, String sField) throws ConnectorException { /* You must write code to validate attributes. Parent * data values can be fetched by using hmUserDetails.get(field) * For child data values, loop through the * ArrayList/Vector fetched by hmEntitlementDetails.get("Child Table") * Depending on the outcome of the validation operation, * the code must return true or false. */ /* * In this sample code, the value "false" is returned if the field * contains the number sign (#). Otherwise, the value "true" is * returned. */ boolean valid = true; String sFirstName = (String) hmUserDetails.get(sField); for (int i = 0; i < sFirstName.length(); i++) { if (sFirstName.charAt(i) == '#') { valid = false; break; } } return valid; } }
9.3 ユーザー・リコンシリエーション中のデータ変換の構成
ユーザー・リコンシリエーション中のデータ変換を構成するには、変換クラスに変換メソッドを実装します。
この項の内容は次のとおりです。
9.3.1 ユーザー・リコンシリエーション中のデータ変換について
Lookup.CONNECTOR_NAME.UM.ReconTransformations参照定義は、リコンシリエーション操作中に変換される単一値のユーザー・データを保持します。
たとえば、「名」および「姓」値を使用して、Oracle Identity Managerの「氏名」フィールドの値を作成できます。
ノート:
Lookup.CONNECTOR_NAME.UM.ReconTransformations参照定義は、オプションでデフォルトでは存在しません。
この参照をデコード値としてLookup.CONNECTOR_NAME.UM.Configuration参照定義に追加して、プロビジョニングおよびリコンシリエーション操作中に除外を有効にする必要があります。ユーザー操作への参照定義の設定の詳細は、それぞれのコネクタ・ガイドを参照してください。
9.3.2 リコンシリエーション中にフェッチした単一値のユーザー・データの変換の構成
リコンシリエーション中にフェッチした単一値のユーザー・データの変換を構成するには、変換クラスに変換メソッドを実装し、参照定義を作成し、変換クラスJARファイルをデータベースにアップロードします。
リコンシリエーション中にフェッチした単一値のユーザー・データの変換を構成するには:
9.3.3 サンプル変換クラス
変換クラスに変換メソッドを実装できます。
次のサンプル変換クラスは、ターゲット・システムの「名」および「姓」属性からフェッチした値を使用して、「氏名」属性の値を作成します。
package com.transformationexample; import java.util.HashMap; public class MyTransformer { public Object transform(HashMap hmUserDetails, HashMap hmEntitlementDetails, String sField) throws ConnectorException { /* * You must write code to transform the attributes. * Parent data attribute values can be fetched by * using hmUserDetails.get("Field Name"). * To fetch child data values, loop through the * ArrayList/Vector fetched by hmEntitlementDetails.get("Child Table") * Return the transformed attribute. */ String sFirstName = (String) hmUserDetails.get("First Name"); String sLastName = (String) hmUserDetails.get("Last Name"); return sFirstName + "." + sLastName; } }
9.4 リソース除外リストの構成
Lookup.CONNECTOR_NAME.UM.ProvExclusionListおよびLookup.CONNECTOR_NAME.UM.ReconExclusionList参照定義は、プロビジョニングおよびリコンシリエーション操作を実行しないターゲット・システム・アカウントのユーザーIDを保持します。
この項の内容は次のとおりです。
9.4.1 リソース・エスキューション・リストについて
プロビジョニング操作およびリコンシリエーション操作のためのリソース・エスキューション・リストを作成するには、Lookup.CONNECTOR_NAME.UM.ProvExclusionList参照およびLookup.CONNECTOR_NAME.UM.ReconExclusionList参照をデコード値としてLookup.CONNECTOR_NAME.UM.Configuration参照定義に追加します。
Lookup.CONNECTOR_NAME.UM.ProvExclusionListおよびLookup.CONNECTOR_NAME.UM.ReconExclusionList参照定義は、プロビジョニングおよびリコンシリエーション操作を実行しないターゲット・システム・アカウントのユーザーIDを保持します。
Lookup.CONNECTOR_NAME.UM.ProvExclusionListおよびLookup.CONNECTOR_NAME.UM.ReconExclusionList参照定義はオプションで、デフォルトでは存在しません。
これらの参照をデコード値としてLookup.CONNECTOR_NAME.UM.Configuration参照定義に追加して、プロビジョニングおよびリコンシリエーション操作中に除外を有効にする必要があります。ユーザー操作への参照定義の設定の詳細は、それぞれのコネクタ・ガイドを参照してください。
9.4.2 参照に格納される値の形式
参照に格納される値としてデコード・キー値を入力します。
これらの参照に格納されている値の形式は次のとおりです。
コード・キー | デコード | サンプル値 |
---|---|---|
ユーザー・ログインIDリソース・オブジェクト・フィールド名 |
ユーザーのUser ID |
コード・キー: ユーザー・ログインID デコード: User001 |
[PATTERN]接尾辞を持つユーザー・ログインIDリソース・オブジェクト・フィールド名 |
|
コード・キー: ユーザー・ログインID[PATTERN] ユーザーID User001、User002、User088のいずれかに一致するユーザーを除外するには: デコード: User001|User002|User088 ユーザーIDが00012で始まるユーザーを除外するには: デコード: 00012* 関連項目: サポートされているパターンについては、次を参照してください。
|
9.5 SSL通信の構成
コネクタ・サーバーとOracle Identity Manager間のSSL通信の構成およびトラブルシューティングを行います。
この項では、コネクタ・サーバーとOracle Identity Manager間でSSL通信を構成する方法について説明します。次の項目が含まれます。
9.5.1 コネクタ・サーバーおよびOracle Identity GovernanceのSSLの設定
各SSL対応コネクタ・サーバーとの接続を確立するときには、SSL接続が必要になります。
コネクタ・サーバーおよびOracle Identity Manager間でのSSL通信を設定するには:
-
新しいSSLキーを生成します(または、既存のキーを再利用することもできます):
keytool -genkey -alias keyconnserv -keyalg dsa -keystore <yourKeyStore.jks> -storepass <yourPassword> -validity 360
-
新しく生成した公開キーをエクスポートします。
keytool -export -keystore <yourKeyStore.jks> -storepass <yourPassword> -alias keyconnserv -file icfkey-public.cer
-
SSLにコネクタ・サーバーを構成して、ステップ1で設定した新しいキーストアを使用して開始します。
-
ステップ2で生成した公開キー(icfkey-public.cer)をOIMキーストアにインポートします。
-
ホスト、ポートなどのITリソースを構成します。これらのパラメータは、コネクタ・サーバー(ITリソースの追加フィールド)に渡されます。
-
SSLを使用してコネクタ・サーバーを構成します:
-
コネクタ・サーバーのシステムにSSL証明書をデプロイします。
-
SSLソケットを提供するようにコネクタ・サーバーを構成します。
-
SSLを使用してコネクタ・サーバーと通信するようにアプリケーションを構成します。
アイデンティティ・コネクタ・サーバーとの接続構成に固有のノートは、ターゲット・システムのマニュアルを参照してください。各SSL対応コネクタ・サーバーとの接続を確立するときにはSSL接続が必要になることをアプリケーションに指示します。さらに、コネクタ・サーバーで使用されるSSL証明書のいずれかが非標準認証局によって発行される場合は、追加の認証局を考慮するようにアプリケーションを構成する必要があります。認証局に関するノートは、該当するマニュアルを参照してください。
ノート:
Javaアプリケーションにおいて非標準認証局に関する問題を解決するには、アプリケーションの起動時に次のJavaシステム・プロパティが渡されるようにします。
-
javax.net.ssl.trustStorePassword
たとえば:
-Djavax.net.ssl.trustStorePassword=PASSWORD
-
javax.net.ssl.trustStore
たとえば:
-Djavax.net.ssl.trustStore=/usr/myApp_cacerts
また、非標準認証局を標準の${JAVA_HOME}/lib/security/cacertsディレクトリにインポートすることもできます。
-
-
-
ステップ2で生成した公開キーをOIMキーストアにインポートします。
デフォルトのWeblogicキーストアの選択を継続する場合、次を実行します。
keytool -import -trustcacerts -alias icfkey -file icfkey-public.cer -keystore <pathToYouKeystore>
デフォルトのWeblogicキーストアの例は、server/lib/DemoTrust.jks and server/lib/DemoIdentity.jksです。
9.5.2 SSLのトラブルシューティング
SSL構成に関連する問題をトラブルシューティングするには、構成フォルダ内のコネクタ・サーバー・ログおよびコネクタ・サーバー設定を使用します。
コネクタ・サーバー・ログの例外の例を次に示します。
java.net.SocketException: Default SSL context init failed: null
これは、キーストアへのパスが不正であることを意味します。この例外を処理するには、次のフル/絶対パスを指定します。
UNIXの場合
./connectorserver.sh /run "-J-Djavax.net.ssl.keyStore=/path/to/mykeystore.jks" "-J-Djavax.net.ssl.keyStorePassword=PASSWORD"
Windowsの場合
./connectorserver.sh /run "-J-Djavax.net.ssl.keyStore=C:\path\to\mykeystore.jks" "-J-Djavax.net.ssl.keyStorePassword=PASSWORD"
また、次のチェック・ポイントを確認する必要があります。
-
SSLを使用するコネクタ・サーバー構成の設定の構成フォルダを確認します。
-
公開キーがOIMキーストアに存在する場合、コネクタ・サーバーから公開キーをインポートした後、WLSを再起動します。
9.6 ターゲット・システム属性の追加
ターゲット・システム属性を追加するには、プロビジョニング用の属性の追加、ターゲット・リソースのリコンシリエーション、信頼できるソースのリコンシリエーションなどを行います。
この項の内容は次のとおりです。
ノート:
データ型フィールドに属性を追加する場合、参照定義コード・キーに[Date]
接尾辞を追加してください。
たとえば、_LAST_PASSWORD_CHANGE_DATE_を追加した場合、Lookup.CONNECTOR_NAME.UM.ReconAttrMapまたはLookup.CONNECTOR_NAME.UM.ProvAttrMapのコード・キーに変更を行う際に、次のように属性を指定します。
_LAST_PASSWORD_CHANGE_DATE_[Date]
9.6.1 プロビジョニングに関するターゲット・システム属性の追加
デフォルトでは、ターゲット・システム属性が、Oracle Identity Managerとターゲット・システム間のプロビジョニング用にマップされます。
この項で説明しているステップを実行して、追加属性をプロビジョニング用にマップできます。
ノート:
この項では、属性という用語はユーザー・データを格納するIDデータ・フィールドを指します。
プロビジョニング用にターゲット・システム属性を追加するには、次の操作を実行します。
9.6.1.2 プロビジョニング・マッピング参照への新しいフィールドの追加
新しいフォーム・フィールドの作成後、そのフィールドをプロビジョニング・マッピング参照に追加する必要があります。そのように行うには:
9.6.2 ターゲット・リコンシリエーションに関するターゲット・システム属性の追加
デフォルトでは、ターゲット・システム属性が、Oracle Identity Managerとターゲット・システム間のリコンシリエーション用にマップされます。
必要に応じて、この項で説明されているように、追加属性をターゲット・リコンシリエーション用にマップできます。
ノート:
-
この手順は、リコンシリエーションに新しいターゲット・システム属性を追加する場合にのみ実行します。
-
次のステップでは、BUILDINGという新しい属性が追加され、そのコネクタ属性名はBUILDINGで、フォーム・フィールド名はBuildingです。名前は、大文字と小文字が区別されます。
ターゲット・リコンシリエーション用にターゲット・システム属性を追加するには、次のステップに従います。
-
次のようにして、リソース・オブジェクトの定義に、新しい属性に対応するリコンシリエーション・フィールドを追加します。
-
「リソース・オブジェクト」フォームを開きます。このフォームは「Resource Management」フォルダにあります。
-
「Query for Records」をクリックします。
-
「リソース・オブジェクト表」タブで、CONNECTOR_NAME Userリソース・オブジェクトをクリックし、編集のために開きます。
-
「Object Reconciliation」タブで、「ADD Field」をクリックして、「Add Reconciliation Field」ダイアログ・ボックスを開きます。
-
フィールド名の値、つまりフォームの新しい属性の名前を指定します。
たとえば: Building
-
「フィールド・タイプ」リストから、フィールドのデータ型を選択します。
たとえば: String
-
入力した値を保存し、ダイアログ・ボックスを閉じます。
-
必要に応じて、ステップdからgを繰り返してフィールドをさらにマップします。
-
「Create Reconciliation Profile」をクリックします。これにより、リソース・オブジェクトに行われた変更がMDSにコピーされます。
-
-
対応するフィールドがプロセス・フォームに存在しない場合は、次のように、プロセス・フォームに新しい列を追加します。
-
「フォーム・デザイナ」フォームを開きます。このフォームは「Development tools」フォルダにあります。
-
UD_CONNECTOR_NAMECONフォームを問い合せます。
-
「新しいバージョンの作成」をクリックします。「Create a New Version」ダイアログ・ボックスが表示されます。
-
「ラベル」フィールドで、バージョンの名前を入力します。
-
「Save」をクリックして、ダイアログ・ボックスを閉じます。
-
「現行バージョン」ボックスから、ステップ3の「ラベル」フィールドに入力したバージョン名を選択します。
-
「Additional Columns」タブで、「Add」をクリックします。
-
「名前」フィールドに、データ・フィールドの名前を入力してから、フィールドのその他の詳細を入力します。
ノート: 属性をさらに追加する場合は、ステップgおよびhを繰り返します。
-
「保存」をクリックして、バージョンをアクティブにするをクリックします。
-
-
プロセス定義を修正して、新しく追加された属性と、対応するリコンシリエーション・フィールドとの間のマッピングを追加します。
-
「プロセス定義」フォームを開きます。このフォームはDesign Consoleの「Process Management」フォルダにあります。
-
「Query for Records」アイコンをクリックします。
-
プロセス定義表タブで、CONNECTOR_NAME Userプロセス定義をダブルクリックします。
-
「Reconciliation Field Mappings」タブで、「Add Field Map」をクリックして、「Add Reconciliation Field Mapping」ダイアログ・ボックスを開きます。
-
「フィールド名」リストから、ステップ2eで追加したリソース・オブジェクトの名前を選択します。
-
プロセス・データ・フィールドをダブルクリックし、「検索」ダイアログ・ボックスから対応するプロセス・フォーム・フィールドを選択します。次に、「OK」をクリックします。
-
「Save」をクリックして、ダイアログ・ボックスを閉じます。
-
必要に応じて、ステップcからgを繰り返してフィールドをさらにマップします。
-
-
リコンシリエーション参照Lookup.CONNECTOR_NAME.UM.ReconAttrMapに移動して、次の値を使用して新しい属性に新しいレコードを追加します。
-
コード・キー - リコンシリエーション・フィールドの名前
-
デコード - CONNECTOR_NAME属性の名前
-
-
Design Consoleで、リソース・オブジェクトにリコンシリエーション・プロファイルを再生成します。
9.6.3 信頼できるリコンシリエーションに関するターゲット・システム属性の追加
デフォルトでは、信頼できるソース・リコンシリエーションの属性が、Oracle Identity Managerとターゲット・システム間にマップされます。
必要に応じて、この項で説明されているように、追加属性を信頼できるリコンシリエーション用にマップできます。
ノート:
-
この手順は、リコンシリエーションに新しいターゲット・システム属性を追加する場合にのみ実行します。
-
次のステップでは、BUILDINGという新しい属性が追加され、そのコネクタ属性名はBUILDINGで、フォーム・フィールド名はBuildingです。名前は、大文字と小文字が区別されます。
信頼できるリコンシリエーション用にターゲット・システム属性を追加するには、次のステップに従います。
-
次のようにして、リソース・オブジェクトの定義に、新しい属性に対応するリコンシリエーション・フィールドを追加します。
-
「リソース・オブジェクト」フォームを開きます。このフォームは「Resource Management」フォルダにあります。
-
「Query for Records」をクリックします。
-
「リソース・オブジェクト表」タブで、CONNECTOR_NAME Trusted Userリソース・オブジェクトをクリックし、編集のために開きます。
-
「Object Reconciliation」タブで、「ADD Field」をクリックして、「Add Reconciliation Field」ダイアログ・ボックスを開きます。
-
フィールド名の値、つまりフォームの新しい属性の名前を指定します。
たとえば: Building
-
「フィールド・タイプ」リストから、フィールドのデータ型を選択します。
たとえば: String
-
入力した値を保存し、ダイアログ・ボックスを閉じます。
-
必要に応じて、ステップdからgを繰り返してフィールドをさらにマップします。
-
「Create Reconciliation Profile」をクリックします。これにより、リソース・オブジェクトに行われた変更がMDSにコピーされます。
-
-
対応するフィールドがプロセス・フォームに存在しない場合は、次のように、プロセス・フォームに新しい列を追加します。
-
「フォーム・デザイナ」フォームを開きます。このフォームは「Development tools」フォルダにあります。
-
UD_CONNECTOR_NAMECONフォームを問い合せます。
-
新しいバージョンの作成をクリックします。「Create a New Version」ダイアログ・ボックスが表示されます。
-
「ラベル」フィールドで、バージョンの名前を入力します。
-
「Save」をクリックして、ダイアログ・ボックスを閉じます。
-
「現行バージョン」ボックスから、ステップ3の「ラベル」フィールドに入力したバージョン名を選択します。
-
「Additional Columns」タブで、「Add」をクリックします。
-
「名前」フィールドに、データ・フィールドの名前を入力してから、フィールドのその他の詳細を入力します。
ノート: 属性をさらに追加する場合は、ステップgおよびhを繰り返します。
-
「Save」をクリックし、「Make Version Active」をクリックします。
-
-
プロセス定義を修正して、新しく追加された属性と、対応するリコンシリエーション・フィールドとの間のマッピングを追加します。
-
「プロセス定義」フォームを開きます。このフォームはDesign Consoleの「Process Management」フォルダにあります。
-
「Query for Records」アイコンをクリックします。
-
プロセス定義表タブで、CONNECTOR_NAME Trusted Userプロセス定義をダブルクリックします。
-
リコンシリエーション・フィールド・マッピング・タブで、フィールド・マップの追加をクリックして、リコンシリエーション・フィールド・マッピングの追加ダイアログ・ボックスを開きます。
-
「フィールド名」リストから、ステップ2eで追加したリソース・オブジェクトの名前を選択します。
-
プロセス・データ・フィールドをダブルクリックし、「検索」ダイアログ・ボックスから対応するプロセス・フォーム・フィールドを選択します。次に、「OK」をクリックします。
-
「Save」をクリックして、ダイアログ・ボックスを閉じます。
-
必要に応じて、ステップcからgを繰り返してフィールドをさらにマップします。
-
-
リコンシリエーション参照Lookup.CONNECTOR_NAME.UM.ReconAttrMap.Trustedに移動して、次の値を使用して新しい属性に新しいレコードを追加します。
-
コード・キー - リコンシリエーション・フィールドの名前
-
デコード - CONNECTOR_NAME属性の名前
-