特定のビジネス要件に対応するようにコネクタの機能を拡張できます。
この章は、次の項が含まれます。
顧客IDなどの新規属性を既存の属性セットに追加できます。このため、新規パラメータをラッパー・プロシージャに追加してから、リコンシリエーション問合せを更新して新規属性を含める必要があります。
デフォルトでは、表3-3に示した属性が、リコンシリエーションおよびプロビジョニング用にOracle Identity Managerとターゲット・システム間でマップされます。必要に応じて、リコンシリエーションおよびプロビジョニング用に追加の単一値属性をマップできます。
次の項に、新規単一値属性を追加するために実行する手順について説明します。
リコンシリエーションおよびプロビジョニング用の新規属性を追加する際に実行するステップのサマリーは次のとおりです:
コネクタ・スキーマを拡張して、リコンシリエーションおよびプロビジョニング用の新規属性を含める必要があります。この項では、次の項目について説明します。
新規属性をOIM_FND_USER_TCA_PKG.pckラッパー・パッケージのget_schema()ストアド・プロシージャに追加することにより、コネクタ・スキーマを拡張できます。コネクタ・スキーマを拡張する場合、次の概念を理解する必要があります。
属性の初期化
次の初期化文には、コネクタ・スキーマの属性定義が含まれる内部配列が保持されています。
attr.extend(
NUM
);
ここで、NUMは、初期化する配列のサイズを定義します。配列のサイズは、常に定義される属性の数以上にする必要があります。たとえば、初期化文attr.extend(20);
では、初期化時に20個の属性の内部配列が保持されます。
属性の定義
初期化後、次の形式の文を追加することにより、属性ごとの情報を定義します。
attr (ORD_NO) := attributeinfo(ATTR_NAME,ATTR_TYPE,CREATE_FLAG,UPDATE_FLAG,REQUIRED_FLAG,READ_FLAG);
この形式の詳細は次のとおりです。
ORD_NOは配列内での属性の順序です。これは必須です。
ATTR_NAMEは単一値属性の名前です。
ATTR_TYPEは単一値属性のSQLデータ型です。
CREATE_FLAGは、作成プロビジョニング操作時に属性が必要かどうかを示すフラグです。
UPDATE_FLAGは属性が更新可能かどうかを示すフラグです。
REQUIRED_FLAGは属性が必須かどうかを示すフラグです。
READ_FLAGは属性が読取り可能かどうかを示すフラグです。
各フラグの値1
または0
は、それぞれTrueまたはFalseを示します。たとえば、フラグの値1, 0, 1, 0
は、属性が必須属性で、作成プロビジョニング操作時に想定する必要があることを意味しています。
属性の配列の拡張
次の文を指定することにより、初期化後に配列のサイズを増やすことができます。
attr.extend;
この文を指定するたびに、配列のサイズが1ずつ増加します。
次のように、DBラッパー・パッケージを更新することによりコネクタ・スキーマを拡張して、リコンシリエーションおよびプロビジョニング用の新規属性を含める必要があります。
任意のSQLクライアント(たとえば、SQL Developer)を開き、apps userを使用してターゲット・システムのデータベースに接続します。
OIM_FND_USER_TCA_PKG.pckラッパー・パッケージの本体を開きます。
get_schema()ストアド・プロシージャを選択します。ストアド・プロシージャで定義されている属性のリストが表示されます。
定義済属性の数が初期化済属性の数を超えた場合、次のようにします。
次の属性の初期化文を追加します。
attr.extend;
次の形式で追加する新規属性の定義を入力します。
attr (ORD_NO) := attributeinfo(ATTR_NAME,ATTR_TYPE,CREATE_FLAG,UPDATE_FLAG,REQUIRED_FLAG,READ_FLAG);
たとえば、ユーザー・アカウントの顧客IDを含む新規属性を追加する場合、次の文を指定します。
attr.extend; attr (28) := attributeinfo('CUSTOMER_ID','varchar2',1,1,0,1);
この例では、フラグの値1,1,0,1
は、作成プロビジョニング操作時にCUSTOMER_ID属性が必須で、更新および読取り可能であるという意味です。
定義済属性の数が初期化済属性の数を超えていない場合、新規属性の定義のみを追加します。たとえば、attr (28) := attributeinfo('CUSTOMER_ID','varchar2',1,1,0,1);
となります。
ラッパー・パッケージを再コンパイルします。
コネクタ・アーティファクトを更新して、コネクタ・スキーマの拡張で追加した新規単一値属性を含める必要があります。コネクタ・アーティファクトを更新するには、次の手順を実行します:
次のように、リソース・オブジェクトを更新して、プロセス・フォーム・フィールドの作成で作成した新規単一値属性に対応するリコンシリエーション・フィールドを追加します:
Customer Id
プロビジョニング属性マッピングの参照定義に、次のようにして属性のエントリを追加します。
Customer Id
と入力します。CUSTOMER_ID
と入力します。リコンシリエーション・プロファイルを作成して、リソース・オブジェクト(前述の項)に行われた変更をすべてMDSにコピーします。
作成および更新プロビジョニング操作時に新規追加した列属性(Customer Id)をサポートするには、Procedures.propertiesファイルで起動されるストアド・プロシージャを更新する必要があります。そのように行うには:
テキスト・エディタで、編集のためにProcedures.propertiesファイルを開きます。
個人の作成および個人の更新のプロビジョニング操作を起動するために使用されるラッパー・パッケージおよびストアド・プロシージャの名前を検索して決定します。たとえば、OIM_FND_USER_TCA_PKG.CREATEUSERおよびOIM_FND_USER_TCA_PKG.UPDATEUSERはユーザー作成およびユーザー更新のプロビジョニング操作に使用されるラッパー・パッケージおよびストアド・プロシージャです。
次のように、前述のステップで決定したストアド・プロシージャを更新します。
任意のSQLクライアント(たとえば、SQL Developer)を開き、apps userを使用してターゲット・システムのデータベースに接続します。
ラッパー・パッケージを開いて、新規追加した属性(たとえば、Customer Id)をユーザー作成およびユーザー更新ストアド・プロシージャに追加します。たとえば、OIM_FND_USER_TCA_PKGパッケージを開いて、新規追加した属性をCreateUserおよびUpdateUserストアド・プロシージャに追加します。
次のスクリーンショットでは、新規追加した属性を含めるためにOIM_FND_USER_TCA_PKGパッケージで更新する必要があるストアド・プロシージャを強調表示しています。
CreateUserストアド・プロシージャを選択して、新規追加した属性を含めるように入力パラメータを更新します。
次のスクリーンショットでは、CreateUserストアド・プロシージャの新規追加した属性(customer_id)を強調表示しています。
UpdateUserストアド・プロシージャを選択して、新規追加した属性を含めるように入力パラメータを更新します。
次のスクリーンショットでは、UpdateUserストアド・プロシージャの新規追加した属性(customer_id)を強調表示しています。
OIM_FND_USER_TCA_PKG Bodyを開いて、CreateUserストアド・プロシージャを選択します。
新規追加した属性を含むプロシージャでCreateUser APIのコールを更新します。
次のスクリーンショットに、更新したCreateUser APIを示します。
ステップ3.3.cから3.3.fを繰り返して、新規追加した属性を含めるようにUPDATEUSERストアド・プロシージャを更新します。
ラッパー・パッケージを再コンパイルします。
これで、リコンシリエーションおよびプロビジョニングのための新規単一値属性を追加する手順は終了です。
リコンシリエーションおよびプロビジョニング用に新しい複数値属性を追加できます。
デフォルトでは、表3-3に示した属性が、リコンシリエーションおよびプロビジョニング用にOracle Identity Managerとターゲット・システム間でマップされます。必要に応じて、リコンシリエーションおよびプロビジョニング用に追加の複数値属性をマップできます。次の項に、新規複数値属性を追加するために実行する手順について説明します。セキュリティ属性の複数値属性が、次の手順を示すために例として使用されています。
リコンシリエーションおよびプロビジョニング用の新規複数値属性を追加する際に実行するステップのサマリーは次のとおりです。
Oracle Identity Managerのメタデータを拡張して、コネクタ・スキーマの拡張で追加した新規属性を含める必要があります。Oracle Identity Managerメタデータを拡張するには、次の手順を実行します。
次のように新しいUIフォームに、Design Consoleのフォーム・デザイナに対して行われたすべての変更を複製します。
ノート:
親属性または子属性にすることができる参照属性に使用する参照スケジュール済ジョブの場合、この項で説明する手順を実行します。
(新規作成した複数値フィールドに対応する)ターゲット・システムの属性の値を参照定義の作成で作成した参照定義と同期するためにスケジュール済ジョブを作成する必要があります。そのように行うには:
コネクタ・バンドル(org.identityconnectors.ebs-1.0.1115.jar)を更新して、前述の項で行った更新をすべて含める必要があります。そのように行うには:
要件に応じて、リコンサイルされた単一値アカウント・データの変換を構成できます。
ノート:
この項ではオプションの手順を説明します。この手順は、リコンシリエーション時のデータの変換を構成する場合にのみ実行します。
要件に応じて、リコンサイルされた単一値データの変換を構成できます。たとえば、電子メールを使用して、Oracle Identity Managerの「電子メール」フィールドに異なる値を作成します。
データの変換を構成するには:
必要な変換ロジックをJavaクラスに実装するコードを記述します。
次のサンプル変換クラスは、ターゲット・システムのEMAIL_ADDRESS列からフェッチした値を使用して、「電子メール」属性の値を作成します。
package oracle.iam.connectors.common.transform; import java.util.HashMap; public class TransformAttribute { /* Description:Abstract method for transforming the attributes param hmUserDetails<String,Object> HashMap containing parent data details param hmEntitlementDetails <String,Object> HashMap containing child data details */ public Object transform(HashMap hmUserDetails, HashMap hmEntitlementDetails,String sField) { /* * 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 sEmail= "trans" + (String)hmUserDetails.get(sField); return sEmail; } }
Javaクラスを保持するJARファイルを作成します。
Oracle Identity Manager JARアップロード・ユーティリティを実行して、JARファイルをOracle Identity Managerデータベースに投稿します。このユーティリティは、Oracle Identity Managerのインストール時に次の場所にコピーされます。
ノート:
このユーティリティを使用する前に、Oracle WebLogic ServerをインストールしたディレクトリにWL_HOME
環境変数が設定されていることを確認してください。
Microsoft Windowsの場合:
OIM_HOME/server/bin/UploadJars.bat
UNIXの場合:
OIM_HOME/server/bin/UploadJars.sh
ユーティリティを実行すると、Oracle Identity Manager管理者のログイン資格証明、Oracle Identity Managerホスト・コンピュータのURL、コンテキスト・ファクトリ値、アップロードするJARファイルのタイプおよびJARファイルがアップロードされる場所の入力を求めるプロンプトが表示されます。JARタイプの値として1を指定します。
次のように変換用の参照定義を作成し、それにエントリを追加します。
Design Consoleにログインします。
「管理」を開いて、「参照定義」をダブルクリックします。
「コード」フィールドに、参照定義の名前としてLookup.Oracle EBS UM.UM.ReconTransformation
を入力します。
「Lookup Type」オプションを選択します。
参照コード情報タブで、「追加」をクリックします。
新しい行が追加されます。
コード・キー列に、変換済の値を格納するリソース・オブジェクト・フィールド名を入力します。たとえば: Email
。
デコード列に、変換ロジックを実装するクラスの名前を入力します。たとえば、oracle.iam.connectors.common.transform.TransformAttribute
です。
参照定義に変更を保存します。
次のように、Lookup.Oracle EBS UM.UM.Configuration参照定義にエントリを追加して、変換を有効にします。
「管理」を開いて、「参照定義」をダブルクリックします。
Lookup.Oracle EBS UM.UM.Configuration参照定義を検索して開きます。
次のように、変換に使用する参照定義の名前を保持するエントリを作成します。
コード・キー: Recon Transformation Lookup
デコード: Lookup.Oracle EBS UM.UM.ReconTransformation
参照定義に変更を保存します。
要件に応じて、リコンサイルおよびプロビジョニングされた単一値データの検証を構成できます。
たとえば、「電子メール」属性からフェッチしたデータを検証して、そのデータに番号記号(#)が含まれていないことを確認します。また、プロセス・フォームの「名」フィールドに入力したデータを検証して、プロビジョニング操作中にターゲット・システムに番号記号(#)が送信されないようにします。
検証チェックで合格しないデータについては、次のメッセージが表示されるか、ログ・ファイルに記録されます。
oracle.iam.connectors.icfcommon.recon.SearchReconTask : handle : Recon event skipped, validation failed [Validation failed for attribute: [FIELD_NAME]]
データの検証を構成するには:
必要な検証ロジックをJavaクラスに実装するコードを記述します。
次のサンプル検証クラスは、「電子メール」属性の値に番号記号(#)が含まれるかどうかを確認します。
package com.validate; import java.util.*; public class MyValidation { public boolean validate(HashMap hmUserDetails, HashMap hmEntitlementDetails, String field) { /* * 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 sEmail=(String) hmUserDetails.get(field); for(int i=0;i<sEmail.length();i++){ if (sEmail.charAt(i) == '#'){ valid=false; break; } } return valid; } }
Javaクラスを保持するJARファイルを作成します。
Oracle Identity Manager JARアップロード・ユーティリティを実行して、JARファイルをOracle Identity Managerデータベースに投稿します。このユーティリティは、Oracle Identity Managerのインストール時に次の場所にコピーされます。
ノート:
このユーティリティを使用する前に、Oracle WebLogic ServerをインストールしたディレクトリにWL_HOME
環境変数が設定されていることを確認してください。
Microsoft Windowsの場合:
OIM_HOME/server/bin/UploadJars.bat
UNIXの場合:
OIM_HOME/server/bin/UploadJars.sh
ユーティリティを実行すると、Oracle Identity Manager管理者のログイン資格証明、Oracle Identity Managerホスト・コンピュータのURL、コンテキスト・ファクトリ値、アップロードするJARファイルのタイプおよびJARファイルがアップロードされる場所の入力を求めるプロンプトが表示されます。JARタイプの値として1を指定します。
リコンシリエーションのプロセス・フォーム・フィールドを検証するJavaクラスを作成した場合は、次の手順を実行します。
Design Consoleにログインします。
「管理」を開いて、「参照定義」をダブルクリックします。
「コード」フィールドに、参照定義の名前としてLookup.Oracle EBS UM.UM.ReconValidation
を入力します。
「Lookup Type」オプションを選択します。
参照コード情報タブで、「追加」をクリックします。
新しい行が追加されます。
コード・キー列に、リソース・オブジェクト・フィールド名を入力します。たとえば、Email
。
デコード列に、クラス名を入力します。たとえば、com.validate.MyValidation
です。
参照定義に変更を保存します。
Lookup.Oracle EBS UM.UM.Configuration参照定義を検索して開きます。
次の値を使用してエントリを作成します。
コード・キー: Recon Validation Lookup
デコード: Lookup.Oracle EBS UM.UM.ReconValidation
参照定義に変更を保存します。
プロビジョニングのプロセス・フォーム・フィールドを検証するJavaクラスを作成した場合は、次の手順を実行します。
Design Consoleにログインします。
「管理」を開いて、「参照定義」をダブルクリックします。
「コード」フィールドに、参照定義の名前としてLookup.Oracle EBS UM.UM.ProvValidation
を入力します。
「Lookup Type」オプションを選択します。
参照コード情報タブで、「追加」をクリックします。
新しい行が追加されます。
「Code Key」列に、プロセス・フォーム・フィールド名を入力します。デコード列で、クラス名を入力します。
参照定義に変更を保存します。
Lookup.Oracle EBS UM.UM.Configuration参照定義を検索して開きます。
次の値を使用してエントリを作成します。
コード・キー: Provisioning Validation Lookup
デコード: Lookup.Oracle EBS UM.UM.ProvValidation
参照定義に変更を保存します。