プロバイダの要件を決定したら、その要件を満たす事前定義済プロバイダを指定する必要があります。この手順を実行するために、この付録で説明する情報を使用してください。
Oracle Identity Managerの現行リリースには次のプロバイダが含まれています。
このプロバイダは、ターゲット・システム・サーバーのステージング・ディレクトリに格納されているフラット・ファイルのデータを読み取り、Oracle Identity Managerサーバーのアーカイブ・ディレクトリのファイルにデータをコピーします。ステージング・ディレクトリが別のコンピュータにある場合、それらのディレクトリを共有にして、Oracle Identity Managerサーバーにネットワーク・ドライブとしてマッピングする必要があります。
このプロバイダのパラメータを次に示します。
ステージング・ディレクトリ(親データ)
このパラメータを使用して、親データを含むファイルを格納するディレクトリのパスを指定します。このパラメータ値の指定は必須です。
この場合の、親データは、ターゲット・システムに格納されるユーザー情報です。ステージング・ディレクトリは、Oracle Identity Managerサーバーにマッピングされる共有ディレクトリであることが必要です。
このパラメータのサンプル値:
T:\TargetSystemDirectory\ParentData
親データ・ファイルに格納されるデータは、次の規則に準拠する必要があります。
ファイルの1行目: ファイルの内容を示すファイル・ヘッダー
ファイル・ヘッダーの先頭にはシャープ記号(#)を付けることができます。記号はファイルの読取り時には無視されます。ただし、ヘッダーの先頭に空白がないようにしてください。英語以外の言語を使用している場合、この行に非ASCII文字を入力してはいけません。
注意: 1行目に非ASCII文字を入力しないようにするチェック機能はありません。また、汎用テクノロジ・コネクタ・フレームワークは非ASCII文字を解析できます。ただし、非ASCII文字を使用すると、作成した汎用テクノロジ・コネクタのオブジェクトをフレームワークが自動的に作成する時点で問題が発生します。この制限事項の詳細は、「既知の問題」の章の「多言語のサポート」を参照してください。 |
ファイルの2行目: メタデータ、すなわちファイル内のデータのフィールド名
英語以外の言語を使用している場合、この行に非ASCII文字を入力してはいけません。この制限事項の詳細は、前の「注意」を参照してください。
ファイルの3行目以降: 実際のデータ行
3行目以降は、Oracle Identity Managerに対して選択した言語でデータを入力できます。言語のキャラクタ・セットがASCIIか非ASCIIかには関係ありません。
3行目以降にデータがない場合は、リコンシリエーション中に例外がスローされスタック・トレースの結果が画面に表示されます。この場合、データ・ファイルの3行目以降にデータが含まれていることを確認してから、リコンシリエーションを再試行します。この問題は、「既知の問題」の章の「その他の既知の問題」でも説明しています。
次に、サンプル親データ・ファイルの内容を示します。
##Active Directory user Name TD,Address TD,User ID TD John Doe,Park Street,jodoe Jane Doe,Mark Street,jadoe
ステージング・ディレクトリ(複数値データ)
このパラメータを使用して、複数値データ(ロールまたはグループ・メンバーシップのデータなど)を含むファイルを格納するディレクトリのパスを指定します。このパラメータ値の指定は必須ではありません。
このパラメータのサンプル値:
T:\TargetSystemDirectory\ChildData
ステージング・ディレクトリは、ターゲット・システム上の共有ディレクトリで、Oracle Identity Managerサーバーにマッピングする必要があります。また、共有ディレクトリには、複数値データのカテゴリごとに別のファイルを配置する必要があります。たとえば、特定のターゲット・システムの複数値データが、グループ・メンバーシップ・データとロール・データである場合は、グループ・メンバーシップ・データのファイルとロール・データのファイルが必要です。
子データ・ファイルに格納されているデータは、親データ・ファイルに定義されている規則に準拠する必要があります。
また、同じ一意フィールドが親データ・ファイルと各子データ・ファイルに存在する必要があります。このフィールドは、子データ・ファイルの各レコードを親データ・ファイルの1つのレコードに一意にリンクするための参照値として使用されます。この構造は、RDBMSの整合性制約(主キーと外部キー)の概念に似ています。
注意: 一意フィールドは、子データ・ファイルの最初のフィールドであることが必要です。 |
次にサンプル子データ・ファイルの内容を示します。このファイルは、前に示したサンプル親データ・ファイルにリンクするロール情報を含んでいます。
###Role User ID TD,Role Name TD,Role Type TD jodoe,admin1,admin jadoe,admin2,admin
次に示すサンプル子データ・ファイルは、前に示したサンプル親データ・ファイルにリンクするグループ・メンバーシップ情報を含んでいます。
###Group Membership User ID TD,Group Name TD,Group Type TD jodoe,OracleDev1,OracleDev jadoe,OracleDev2,OracleDev jadoe,OracleDev3,OracleDev jadoe,OracleDev4,OracleDev jadoe,OracleDev5,ConnectorDev
一意フィールドの名前User ID TD
は、子データ・ファイルと親データ・ファイルで同じであることに注意してください。
「コネクタ構成の変更」画面では、子データセットの名前は子データ・ファイルに指定したヘッダーと同じです。これらのサンプル子データ・ファイルの場合、表示される子データセットのラベルはRole
とGroup Membership
になります。また、「ステップ3: コネクタ・フォーム名の検証」画面では、子データセットに対応するフォームに表示されるデフォルト名はRole
とGroup Membership
です。「「ステップ3: コネクタ・フォーム名の検証」画面」で説明したように、デフォルト名を受け入れるか、変更することができます。
アーカイブ・ディレクトリ
このパラメータを使用して、すでにリコンサイルしたデータ・ファイルを格納する、Oracle Identity Managerサーバーのディレクトリ・パスを指定します。
このパラメータ値の指定は必須です。
リコンシリエーション実行の最後に、データ・ファイルがアーカイブ・ディレクトリに移動され、ステージング・ディレクトリから削除されます。
アーカイブ・ディレクトリに移動されるファイルには、タイムスタンプやマークは何も付いていません。このため、アーカイブ・ディレクトリのパスを指定するときは、次の制限事項に注意してください。
ステージング・ディレクトリ・パスと同じアーカイブ・ディレクトリ・パスを指定してはいけません。同じパスを指定すると、リコンシリエーション実行の最後にアーカイブ・ディレクトリの既存ファイルが削除されます。
現行のリコンシリエーション実行中に、直前のリコンシリエーション実行で使用されたファイルと同じ名前のデータ・ファイルがステージング・ディレクトリに配置されると、アーカイブ・ディレクトリの既存ファイルがステージング・ディレクトリの新しいファイルによって上書きされます。
これらの制限事項は、「既知の問題」の章の「「ステップ2: パラメータの定義」画面」で説明しています。
ファイルの接頭辞
このパラメータを使用して、親データ・ファイルと子データ・ファイルの両方について、ステージング・ディレクトリのファイル名に付ける接頭辞を指定します。リコンシリエーションの際には、拡張子に関係なく、指定した接頭辞がファイル名に付いているすべてのファイルが処理されます。
例:
「ファイルの接頭辞」パラメータの値としてusrdata
を指定すると、複数値(子)データ・ファイルに関して、ステージング・ディレクトリに配置された次のファイルのデータが解析されます。
usrdataRoleData.csv usrdataGroupMembershipData.txt
同じディレクトリにある次のファイルからはデータが抽出されません。ファイル名がusrdata
で始まらないためです。
RoleData.csv GroupMembershipData.txt
指定されたデリミタ
このパラメータを使用して、ステージング・ディレクトリのファイルでデリミタ文字として使用する文字を指定します。
このパラメータの値として指定できるのは1文字のみです。
注意: 空白( )をデリミタとして使用することはできません。また、指定する文字が、そのデータ・ファイルでデリミタとしてのみ使用されることを確認する必要があります。この文字がデータそのものに含まれると、データ行(レコード)が正しく解析されません。たとえば、カンマ(,)がデータそのものにも含まれる場合は、デリミタとしてカンマを使用できません。 |
タブ区切り
このパラメータを使用して、ファイルがタブ区切りかどうかを指定します。「指定されたデリミタ」パラメータに値を指定すると、このパラメータは無視されます。
固定列幅
入力ファイルに固定幅データが含まれる場合は、このパラメータを使用してデータ列の文字幅を指定します。
注意: ここでの固定幅という用語は、データ・フィールドのバイト長ではなく文字数を意味します。たとえば、シングルバイト・データ4文字とマルチバイト・データ4文字も同じ幅になります。 |
「指定されたデリミタ」パラメータまたは「タブ区切り」パラメータに値を指定すると、このパラメータは無視されます。
一意の属性(親データ)
複数値データの場合は、このパラメータを使用して、親データと子データ・ファイルに共通するフィールドを指定します。
ファイル・エンコーディング
このパラメータを使用して、親データ・ファイルで使用されるキャラクタ・セット・エンコーディングを指定します。
言語設定が英語のオペレーティング・システムを実行するコンピュータに格納されているデータ・ファイルに対してはCp1251
を指定します。これは、汎用テクノロジ・コネクタ・フレームワークでサポートされるjava.io
APIの正規名です。「多言語のサポート」に示されたリストからその他の言語を選択する場合は、次のWebページを参照して、対応するjava.io
APIの正規名を指定する必要があります。
http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html
注意: APIに指定する正規名は、このWebページに表示されているとおりに入力する必要があります。正規名の大文字と小文字も変更しないでください。 |
たとえば、Microsoft Windowsコンピュータで繁体字中国語のエンコーディング・セットを指定する場合は、「ファイル・エンコーディング」パラメータの値としてMS950
を指定します。
次の表は、ステージングおよびアーカイブのデータ・ファイルの格納に使用される共有ディレクトリに対する様々な権限の影響を示します。
記憶域エンティティ | アクセス権限 | 権限がない場合の影響 |
---|---|---|
ステージング・ディレクトリ(親) | 読取り | リコンシリエーションが実行されません。エラー・メッセージがロギングされます。 |
ステージング・ディレクトリ(親) | 書込み | 親ステージング・ディレクトリのデータ・ファイルが、アーカイブ・プロセスの最後に削除されません。 |
ステージング・ディレクトリ(親) | 実行 | 影響はありません。 |
ステージング・ディレクトリ(子) | 読取り | 子データのリコンシリエーションが実行されません。エラー・メッセージがロギングされます。 |
ステージング・ディレクトリ(子) | 書込み | 子ステージング・ディレクトリのデータ・ファイルが、アーカイブ・プロセスの最後に削除されません。 |
ステージング・ディレクトリ(子) | 実行 | 影響はありません。 |
アーカイブ・ディレクトリ | 読取り | 親データと子データのリコンシリエーションが実行されます。アーカイブ・プロセスの際に、ファイルがアーカイブ・ディレクトリにコピーされません。ただし、親と子のステージング・ディレクトリに必要な権限が設定されている場合、これらのファイルがステージング・ディレクトリから削除されます。 |
アーカイブ・ディレクトリ | 書込み | 親データと子データのリコンシリエーションが実行されます。アーカイブ・プロセスの際に、ファイルがアーカイブ・ディレクトリにコピーされません。ただし、親と子のステージング・ディレクトリに必要な権限が設定されている場合、これらのファイルがステージング・ディレクトリから削除されます。 |
アーカイブ・ディレクトリ | 実行 | 影響はありません。 |
ステージング・ディレクトリ(親ファイル) | 読取り | Read 権限があるすべてのデータ・ファイルでリコンシリエーションが実行されますが、このファイルについては実行されません。エラー・メッセージがロギングされます。 |
ステージング・ディレクトリ(親ファイル) | 書込み | このファイルのデータはリコンサイルされます。ただし、このファイルはアーカイブ・プロセスの最後に削除されません。エラー・メッセージがロギングされます。 |
ステージング・ディレクトリ(親ファイル) | 実行 | 影響はありません。 |
ステージング・ディレクトリ(子ファイル) | 読取り | Read 権限があるすべてのデータ・ファイルでリコンシリエーションが実行されますが、このファイルについては実行されません。エラー・メッセージがロギングされます。 |
ステージング・ディレクトリ(子ファイル) | 書込み | このファイルのデータはリコンサイルされます。ただし、このファイルはアーカイブ・プロセスの最後に削除されません。エラー・メッセージがロギングされます。 |
ステージング・ディレクトリ(子ファイル) | 実行 | 影響はありません。 |
注意: ステージング・ディレクトリのデータ・ファイルは、エディタで開かれている場合は削除できません。 |
このプロバイダはスタンドアロン・プロバイダとしてパッケージされていますが、すべてのパラメータが共有ドライブ・トランスポート・プロバイダにバンドルされています。「ステップ1: 基本情報」画面で共有ドライブ・トランスポート・プロバイダを選択した場合は、CSVフォーマット・プロバイダを選択する必要があります。このプロバイダを選択すると、パラメータは共有ドライブ・トランスポート・プロバイダのパラメータと一緒に表示されます。
このプロバイダのパラメータを次に示します。
ターゲットID
このパラメータを使用して、実際のターゲットのターゲットIDを定義します。
SPMLリクエストを作成するためにVelocityテンプレート・エンジンが使用されます。このプロバイダは、次のプロセスに対してSPML 2.0 DSMLプロファイルに基づいてリクエストを生成します。
リクエストの追加
次のOracle Identity Managerプロセス・タスクに対するリクエストの変更
フィールドの更新
子データの追加
子データの変更
子データの削除
リクエストの一時停止(Oracle Identity Managerプロセス・タスクの無効化)
リクエストの再開(Oracle Identity Managerプロセス・タスクの有効化)
リクエストの削除
このプロバイダには、次のデフォルトIDフィールドがあります。
objectClass
containerID
各プロビジョニング・タスク(「ユーザーの作成」や「ユーザーの変更」など)について、このプロバイダによって事前定義済形式でリクエストが生成されます。
次の項では、様々なプロビジョニング・タスクのために、プロバイダによって実装されるリクエストとレスポンスをプロビジョニングするためのXML定義コードを示します。
注意: リクエストとレスポンスの定義XMLコードは参照のために示しています。プロバイダのこのコードをカスタマイズすることはできません。プロビジョニング・トランスポート・プロバイダは、次の項に示すサンプル・レスポンス形式に基づくレスポンスを想定しています。 |
次に、追加リクエストのサンプルSPMLコードを示します。
<addRequest xmlns="urn:oasis:names:tc:SPML:2:0" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> <data> <dsml:attr name="objectclass"> <dsml:value>userObject</dsml:value> </dsml:attr> <dsml:attr name="firstName"> <dsml:value>John</dsml:value> </dsml:attr> <dsml:attr name="lastName"> <dsml:value>Doe</dsml:value> </dsml:attr> </data> </addRequest>
次に、追加レスポンスのサンプルSPMLコードを示します。
<addResponse status="success"> <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </addResponse>
次に、変更リクエストのサンプルSPMLコードを示します。
<modifyRequest xmlns="urn:oasis:names:tc:SPML:2:0" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core"> <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> <modification> <dsml:modification name="lastName" operation="replace"> <dsml:value>Doe</dsml:value> </dsml:modification> </modification> </modifyRequest>
次に、変更レスポンスのサンプルSPMLコードを示します。
<modifyResponse status="success" > <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </modifyResponse>
次に、削除リクエストのサンプルSPMLコードを示します。
<deleteRequest xmlns="urn:oasis:names:tc:SPML:2:0" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core"> <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </deleteRequest>
次に、削除レスポンスのサンプルSPMLコードを示します。
<deleteResponse status="success" > <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </deleteResponse>
次に、一時停止リクエストのサンプルSPMLコードを示します。
<suspendRequest xmlns="urn:oasis:names:tc:SPML:2:0" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core"> <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </suspendRequest>
次に、一時停止レスポンスのサンプルSPMLコードを示します。
<suspendResponse status="success" > <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </suspendResponse>
次に、再開リクエストのサンプルSPMLコードを示します。
<resumeRequest xmlns="urn:oasis:names:tc:SPML:2:0" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core"> <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </resumeRequest>
次に、再開レスポンスのサンプルSPMLコードを示します。
<resumeResponse status="success" > <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </resumeResponse>
次に、子表のデータ挿入のための入力を取得する変更リクエストのサンプルSPMLコードを示します。
<modifyRequest xmlns="urn:oasis:names:tc:SPML:2:0" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core"> <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> <modification> <dsml:modification name="Group Membership" operation="add"> <dsml:value>AdminOra, System Admins, USA </dsml:value> </dsml:modification> </modification> </modifyRequest>
注意: 子表の操作には標準の形式はありません。このため、子データのプロビジョニングはSPMLの変更リクエストで処理されます。変更には、対応する子データセットと名前が同じ1つの属性が使用されます。フィールド値をXMLリクエスト・ファイルに配置する順序は、対応するフィールドが関連する子フォームに表示される順序と同じにする必要があります。前のXMLコード行ではデータセット名とフィールド値を太字で示しています。これは、子表の更新操作や子表の削除操作で使用されるリクエストでも同様です。 |
次に、変更レスポンスのサンプルSPMLコードを示します。
<modifyResponse status="success" > <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </modifyResponse>
次に、子表のデータ更新のための入力を取得する変更リクエストのサンプルSPMLコードを示します。
<modifyRequest xmlns="urn:oasis:names:tc:SPML:2:0" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core"> <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> <modification> <dsml:modification name="Group Membership" operation="replace"> <dsml:value>AdminOra, System Admins, USA </dsml:value> </dsml:modification> </modification> </modifyRequest>
次に、変更レスポンスのサンプルSPMLコードを示します。
<modifyResponse status="success" > <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </modifyResponse>
次に、子表のデータ削除のための入力を取得する変更リクエストのサンプルSPMLコードを示します。
<modifyRequest xmlns="urn:oasis:names:tc:SPML:2:0" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core"> <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> <modification> <dsml:modification name="Group Membership" operation="delete"> <dsml:value>AdminOra, System Admins, USA </dsml:value> </dsml:modification> </modification> </modifyRequest>
次に、変更レスポンスのサンプルSPMLコードを示します。
<modifyResponse status="success" > <psoID ID="jdoe"> <targetID ID="ADServer_124"/> <containerID ID="Contractors"/> </psoID> </modifyResponse>
このプロバイダのパラメータを次に示します。
WebサービスURL
このパラメータを使用して、使用するWebサービスのURLを指定します。
操作名
このパラメータを使用して、プロバイダで実行するWebサービス・メソッドの名前を指定します。
また、ターゲットWebサービスは次の要件を満たす必要があります。
ターゲット操作の入力パラメータは、バイト配列(byte[]
)であることが必要です。このパラメータにはSPMLプロビジョニング・リクエストを指定します。
ターゲット操作から返されるパラメータは、必ずバイト配列(byte[]
)です。このパラメータにはSPMLレスポンスが含まれます。
サンプル操作のシグネチャを次に示します。
public byte[] doProvisioning(byte[] requestData){
このサンプルでは操作名はdoProvisioning
です。
次の表に、このリリースのOracle Identity Managerに含まれる検証プロバイダを示します。
検証プロバイダ | 説明 |
---|---|
IsNotBlankOrNulll | フィールド値がNULLまたは空白かをチェックします。 |
IsValidDate | フィールド値が有効な日付かどうかをチェックします。 |
IsInRange | フィールド値が最小値と最大値の対で指定された範囲内かどうかをチェックします。 |
IsByte | フィールド値を基本型byteに変換できるかどうかをチェックします。 |
IsDouble | フィールド値を基本型doubleに変換できるかどうかをチェックします。 |
IsFloat | フィールド値を基本型floatに変換できるかどうかをチェックします。 |
IsInteger | フィールド値を基本型integerに変換できるかどうかをチェックします。 |
IsLong | フィールド値を基本型longに変換できるかどうかをチェックします。 |
IsShort | フィールド値を基本型shortに変換できるかどうかをチェックします。 |
MatchRegexp | フィールド値が指定の正規表現と一致するかどうかをチェックします。 |
MaxLength | フィールド値の長さが指定値以下かどうかをチェックします。 |
MinLength | フィールド値の長さが指定値以上かどうかをチェックします。 |