6 EBS User Managementコネクタの機能拡張

特定のビジネス要件に対応するようにコネクタの機能を拡張できます。

6.1 リコンシリエーションおよびプロビジョニング用の新規複数値属性の追加

リコンシリエーションおよびプロビジョニング用に新しい複数値属性を追加できます。

デフォルトでは、「属性マッピング」に示した属性が、リコンシリエーションおよびプロビジョニング用にOracle Identity Governanceとターゲット・システム間でマップされます。必要に応じて、リコンシリエーションおよびプロビジョニング用に追加の複数値属性をマップできます。次の項に、新規複数値属性を追加するために実行する手順について説明します。セキュリティ属性の複数値属性が、次の手順を示すために例として使用されています。

6.1.1 リコンシリエーションおよびプロビジョニング用の新規複数値属性を追加するステップのサマリー

リコンシリエーションおよびプロビジョニング用の新規複数値属性を追加する際に実行するステップのサマリーは次のとおりです。

  1. DBラッパー・パッケージを更新して新規複数値属性を含めます。「コネクタ・スキーマの拡張」の説明に従って、get_schemaプロシージャのメインの属性リストに親属性を含めてから、すべての子属性を含む属性リストを作成します。
  2. 「Oracle Identity Managerメタデータの拡張」の説明に従って、Oracle Identity Goernanceメタデータを更新して新しい属性を追加します。
  3. 「スケジュール済ジョブの作成」の説明に従ってスケジュール済ジョブを作成し、新規作成した複数値属性に対応するターゲット・システムの属性の値をOracle Identity Governanceの値と同期します。
  4. 「コネクタ・バンドルの更新」の説明に従ってコネクタ・バンドルを更新し、新規複数値属性をsearch.propertiesファイルおよびProcedures.propertiesファイルに含めます。
  5. 「ラッパー・パッケージへのAPIの追加」の説明に従ってAPIをラッパー・パッケージに追加し、新規追加した複数値属性でプロビジョニング操作を有効化します。

6.1.2 コネクタ・スキーマの拡張

コネクタ・スキーマを拡張して、リコンシリエーションおよびプロビジョニング用の新規複数値属性を含める必要があります。そのように行うには:

  1. 任意のSQLクライアントを開き、APPSユーザーを使用してデータベースに接続します。
  2. OIM_FND_USER_TCA_PKG.pckラッパー・パッケージの本体を開きます。
  3. get_schema()ストアド・プロシージャを選択します。
  4. 新規複数値属性を宣言します。新規複数値属性を宣言する構文は次のとおりです。

    attr := attributelist();

  5. 次の形式で、新規複数値属性に含む必要のある子属性の数を指定することにより、属性リストを初期化します。

    attr.extend(NUM);

    ここで、NUMは子属性の数です。指定された数の子属性の配列が内部で作成されます。

    サンプル値: attr.extend(4);

    属性リストを初期化したり、追加する子属性ごとに次の構文を使用して1ずつリスト内の子属性の数を増やしたりすることもできます。

    attr.extend;

    関連項目:

    サンプル・コード・スニペットの詳細は、「コネクタ・スキーマの拡張のためのサンプル・コード・スニペット」を参照してください

  6. 各子属性を定義して、次の形式で、属性名、データ型および権限フラグなどの情報を含めます。

    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は、属性が必須属性で、作成プロビジョニング操作時に想定する必要があることを意味しています。

  7. 次の文を使用して、新規複数値属性の定義およびスキーマを終了します。
    schemaout.extend;
    schemaout(ORD_NO) := schema_object('ATTR_NAME', attr)
    

    この文で、ORD_NOはコネクタ・スキーマでの複数値属性の順序で、ATTR_NAMEは追加される複数値属性の名前です。次に、文の例を示します。

    schemaout.extend;
    schemaout( 4 ) := schema_object('__SECURITY_ATTRS__',attr);
    
  8. ラッパー・パッケージを再コンパイルします。

6.1.3 Oracle Identity Managerメタデータの拡張

デフォルトでは、アイデンティティ・セルフ・サービスのアプリケーション用の「スキーマ」ページに表示される複数値フィールドは、リコンシリエーションのためにOracle Identity Governanceとターゲット・システム間でマップされます。必要に応じて、ターゲット・リソースのリコンシリエーション用に新しい複数値フィールドを追加できます。

ターゲット・アプリケーションからユーザーをリコンシリエーションするための新しい複数値フィールドを追加するには:

  1. Oracle Identity System Administrationにログインし、追加する複数値フィールドの値のリストを保持できる参照を作成します。
  2. 次のように子フォームを作成し、属性を追加します。
    1. Identity Self Serviceにログインします。
    2. ターゲット・システム用に作成したアプリケーションを編集のために検索して開きます。
    3. 「スキーマ」ページで、新しい子フォームとその属性を追加します。たとえば、「表示名」および「ターゲット属性」フィールドに値を入力します。

      ノート:

      • 「リコンシリエーション・フィールド」オプションを必ず選択してください。
      • 子フォームに属性を「拡張設定」オプションから追加する場合、必ず新規追加した属性に「参照」とマークします。
      • 「値リスト」フィールドに、ステップ1で作成した参照の名前を入力します。
    4. 変更を適用します。
  3. Identity System Administrationにログインし、新しいフォームを作成してアプリケーションに関連付けます。

6.1.4 スケジュール済ジョブの作成

これらの事前定義済ジョブを使用するか、要件に合せて編集できます。または、カスタム・リコンシリエーション・ジョブを作成することもできます。事前定義済ジョブの編集または新しいジョブの追加の詳細は、『Oracle Fusion Middleware Oracle Identity Governanceでのセルフ・サービス・タスクの実行』リコンシリエーション・ジョブの更新に関する項を参照してください。

6.1.5 コネクタ・バンドルの更新

コネクタ・バンドル(org.identityconnectors.ebs-1.0.1115.jar)を更新して、前述の項で行った更新をすべて含める必要があります。そのように行うには:

  1. JARダウンロード・ユーティリティを実行して、コネクタ・バンドル(org.identityconnectors.ebs-1.0.11150.jar)ファイルをOracle Identity Governanceデータベースからダウンロードします。このユーティリティは、Oracle Identity Managerのインストール時に次の場所にコピーされます。

    ノート:

    このユーティリティを使用する前に、Oracle WebLogic ServerをインストールしたディレクトリにWL_HOME環境変数が設定されていることを確認してください。

    Microsoft Windowsの場合:

    OIM_HOME/server/bin/DownloadJars.bat

    UNIXの場合:

    OIM_HOME/server/bin/DownloadJars.sh

    このユーティリティを実行すると、Oracle Identity Governance管理者のログイン資格証明、Oracle Identity Governanceホスト・コンピュータのURL、コンテキスト・ファクトリ値、アップロードするJARファイルのタイプ、およびアップロードするJARファイルが含まれる場所を入力するように要求されます。JARタイプの値として4を指定します。

  2. Oracle Identity GovernanceをホストするコンピュータのディレクトリにJARファイルの内容を抽出します。
  3. テキスト・エディタで、抽出したJARファイルの構成ディレクトリにあるsearch.propertiesファイルを開きます。
  4. search.propertiesファイルの最初の部分で、新規追加した属性に対応するエントリを追加します。
  5. search.propertiesファイルの最初の部分で、オブジェクト名、リコンシリエーション操作のタイプおよびSQL問合せ名を定義することにより、新規追加した属性のエントリに対応するエントリを追加します。たとえば、次のエントリを追加します。
    __SECURITY_ATTR_NAMES__.lookup=LOOKUP_SECATTR_NAME_QUERY
    __SECURITY_ATTR_TYPES__.lookup=LOOKUP_SECATTR_DATATYPE_QUERY
    

    この例の説明は、次のとおりです。

    • __SECURITY_ATTR_NAMESおよび__SECURITY_ATTR_TYPES__はオブジェクト名です。

    • lookupは、このエントリの問合せが参照フィールドの同期を実行するために使用されることを指定します。

    • LOOKUP_SECATTR_NAME_QUERYおよびLOOKUP_SECATTR_DATATYPE_QUERYはSQL問合せ名です。

  6. search.propertiesファイルの2番目の部分で、ステップ5で指定したSQL問合せ名に対応するSQL問合せを追加します。たとえば、次のエントリを追加します。
    LOOKUP_SECATTR_DATATYPE_QUERY= select datatype as CODE, datatype as DECODE from ( select distinct(DATA_TYPE) as datatype from AK_ATTRIBUTES)
    
    LOOKUP_SECATTR_NAME_QUERY= select sa.ATTRIBUTE_CODE as CODE, (CONCAT(fa.application_short_name || '~', sa.ATTRIBUTE_CODE)) AS DECODE FROM fnd_application fa, AK_ATTRIBUTES sa where fa.application_id=sa.attribute_application_id
    
  7. UM_USER_RECONおよびUM_USER_SYNCのSQL問合せを更新して、新規追加した属性に関する情報を含めます。たとえば、UM_USER_RECONとUM_USER_SYNC SQL問合せの両方を「複数値属性を含めるために更新されるサンプルSQL問合せ」のSQL問合せを使用して更新します。
  8. search.propertiesファイルを保存して閉じます。
  9. テキスト・エディタで、ステップ2で抽出したJARファイルの構成ディレクトリにあるProcedures.propertiesファイルを開きます。
  10. 新規追加した属性に対応するエントリを追加します。たとえば、次のエントリを追加します。
    __SECURITY_ATTRS__.add=OIM_FND_USER_TCA_PKG.ADDUSERSECURITYATTRIBUTE
    __SECURITY_ATTRS__.remove=OIM_FND_USER_TCA_PKG.DELETEUSERSECURITYATTRIBUTE
    

    Procedures.propertiesファイルへのエントリの追加の詳細は、「プロビジョニング・プロシージャについて」を参照してください。

  11. Procedures.propertiesファイルを保存して閉じます。
  12. 更新した.propertiesファイルでコネクタ・バンドルのJARファイルを再作成します。
  13. Oracle Identity GovernanceのJARアップロード・ユーティリティを実行して、新規コネクタ・バンドル(ステップ12で更新済)をOracle Identity Governanceデータベースに対して投稿します。このユーティリティは、Oracle Identity Governanceのインストール時に次の場所にコピーされます。

    ノート:

    このユーティリティを使用する前に、Oracle WebLogic ServerをインストールしたディレクトリにWL_HOME環境変数が設定されていることを確認してください。

    Microsoft Windowsの場合:

    OIM_HOME/server/bin/UploadJars.bat

    UNIXの場合:

    OIM_HOME/server/bin/UploadJars.sh

    このユーティリティを実行すると、Oracle Identity Governance管理者のログイン資格証明、Oracle Identity Governanceホスト・コンピュータのURL、コンテキスト・ファクトリ値、アップロードするJARファイルのタイプ、およびアップロードするJARファイルが含まれる場所を入力するように要求されます。JARタイプの値として4を指定します。

6.1.6 ラッパー・パッケージへのAPIの追加

APIをラッパー・パッケージに追加して、新規追加した属性でプロビジョニング操作を実行するようにコネクタを有効化します。そのように行うには:

  1. 任意のSQLクライアントを開きます。たとえば、SQL Developerなどです。
  2. OIM_FND_USER_TCA_PKGパッケージの仕様部を開いて、プロビジョニング操作を実行するためのメソッドおよび入力パラメータを定義するエントリを追加します。たとえば、新規追加した属性に対して次のメソッドを追加します。
    procedure addUserSecurityAttribute(user_id in number, SECURITY_ATTR_NAME in varchar2, SECURITY_APP_ID varchar2,SECURITY_ATTR_VALUE varchar2,SECURITY_ATTR_TYPE varchar2);
    procedure deleteUserSecurityAttribute(user_id in number, SECURITY_ATTR_NAME in varchar2, SECURITY_APP_ID varchar2,SECURITY_ATTR_VALUE varchar2,SECURITY_ATTR_TYPE varchar2);
    
  3. OIM_FND_USER_TCA_PKGパッケージの本体を開いて、前述のステップで定義したメソッドの実装を追加します。たとえば、新規追加した属性に対して次の実装を追加します。
    procedure addUserSecurityAttribute(user_id in number, SECURITY_ATTR_NAME in varchar2, SECURITY_APP_ID varchar2,SECURITY_ATTR_VALUE varchar2,SECURITY_ATTR_TYPE varchar2)
        IS
              x_return_status VARCHAR2(2000);
              x_msg_count NUMBER;
              x_msg_data VARCHAR2(2000);
      l_varchar2_value varchar2(2000);
      l_date_value date;
      l_number_value NUMBER;
        begin
        if SECURITY_ATTR_TYPE = 'NUMBER' then
    l_number_value := SECURITY_ATTR_VALUE;
    elsif SECURITY_ATTR_TYPE = 'DATE' then
        l_date_value := SECURITY_ATTR_VALUE;
    else
    l_varchar2_value := SECURITY_ATTR_VALUE;
    end if;
            icx_user_sec_attr_pub.create_user_sec_attr(
               p_api_version_number   => 1,
               p_return_status        => x_return_status,
               p_msg_count            => x_msg_count,
               p_msg_data             => x_msg_data,
               p_web_user_id          => user_id,
               p_attribute_code       => SECURITY_ATTR_NAME,
               p_attribute_appl_id    => SECURITY_APP_ID,
               p_varchar2_value       => l_varchar2_value,
               p_date_value           => l_date_value,
               p_number_value         => l_number_value,
               p_created_by           => -1,
               p_creation_date        => sysdate,
               p_last_updated_by      => -1,
               p_last_update_date     => sysdate,
               p_last_update_login    => -1);
        end addUserSecurityAttribute;
    
    procedure deleteUserSecurityAttribute(user_id in number, SECURITY_ATTR_NAME in varchar2, SECURITY_APP_ID varchar2,SECURITY_ATTR_VALUE varchar2,SECURITY_ATTR_TYPE varchar2)
        IS
              x_return_status VARCHAR2(2000);
              x_msg_count NUMBER;
              x_msg_data VARCHAR2(2000);
      l_varchar2_value varchar2(2000);
      l_date_value date;
      l_number_value NUMBER;
        begin
        if SECURITY_ATTR_TYPE = 'NUMBER' then
    l_number_value := SECURITY_ATTR_VALUE;
    elsif SECURITY_ATTR_TYPE = 'DATE' then
        l_date_value := SECURITY_ATTR_VALUE;
    else
    l_varchar2_value := SECURITY_ATTR_VALUE;
    end if;
            icx_user_sec_attr_pub.Delete_User_Sec_Attr(
               p_api_version_number   => 1,
               p_return_status        => x_return_status,
               p_msg_count            => x_msg_count,
               p_msg_data             => x_msg_data,
               p_web_user_id          => user_id,
               p_attribute_code       => SECURITY_ATTR_NAME,
               p_attribute_appl_id    => SECURITY_APP_ID,
               p_varchar2_value       => l_varchar2_value,
               p_date_value           => l_date_value,
               p_number_value         => l_number_value
        );
        end deleteUserSecurityAttribute;
    
  4. ファイルを保存して閉じます。
  5. ラッパー・パッケージをコンパイルするスクリプトを再実行します。

6.2 ターゲット・システムの複数のインストールに対するコネクタの構成

ターゲット・システムの複数のインストールに対してベース・アプリケーションを構成するには、その構成のコピーを作成する必要があります。

次の例でこの要件について説明します。

Example Multinational Inc.のロンドンおよびニューヨークの事業所では、それぞれ独立したスキーマを含め、独自にターゲット・システムがインストールされています。最近、この会社では、Oracle Identity Governanceをインストールしたので、これを構成してインストールされたすべてのターゲット・システムをリンクしようとしています。

このようなシナリオによって提起される要件を満たすには、アプリケーションをクローニングして、ベース・アプリケーションの構成をすべてクローニングされたアプリケーションにコピーする必要があります。アプリケーションのクローニングの詳細は、『Oracle Fusion Middleware Oracle Identity Governanceでのセルフ・サービス・タスクの実行』アプリケーションのクローニングに関する項を参照してください。

6.3 データの変換および検証の構成

アプリケーションの作成時にGroovyスクリプトのロジックを作成して、ユーザー・アカウント・データの変換および検証を構成します。

要件に応じてリコンサイルされた単一値ユーザー・データの変換を構成できます。たとえば、First NameおよびLast Name値を使用して、Oracle Identity Governanceの「氏名」フィールドの値を作成できます。

同様に、要件に応じて、リコンサイルおよびプロビジョニングされた単一値データの検証を構成できます。たとえば、「名」属性からフェッチしたデータを検証して、そのデータに番号記号(#)が含まれていないことを確認します。また、プロセス・フォームの「名」フィールドに入力したデータを検証して、プロビジョニング操作中にターゲット・システムに番号記号(#)が送信されないようにします。

ユーザー・アカウント・データの変換または検証を構成するには、アプリケーションの作成時にGroovyスクリプトを作成する必要があります。Groovyスクリプトベースの検証と変換のロジックを作成する方法の詳細は、『Oracle Fusion Middleware Oracle Identity Governanceでのセルフ・サービス・タスクの実行』プロビジョニング属性とリコンシリエーション属性の検証と変換に関する項を参照してください。

6.4 アクション・スクリプトの構成

アクション・スクリプトを構成するには、アプリケーションの作成時に独自のGroovyスクリプトを作成します。

これらのスクリプトは、アカウントの作成、更新または削除のプロビジョニング操作の前または後に実行されるように構成できます。たとえば、あるスクリプトを、個々のユーザー作成操作前に実行するように構成できます。

アクション・スクリプトの追加または編集の詳細は、『Oracle Fusion Middleware Oracle Identity Governanceでのセルフ・サービス・タスクの実行』プロビジョニング構成の更新に関する項を参照してください。