ユーザー・マネージャ、グループ・マネージャおよび組織マネージャは、ユーザーが自分、他人、グループ、インベントリ、および管理者が使用を許可したその他の項目に関する情報を参照および変更できるアイデンティティ・システム・アプリケーションです。この章で説明するとおり、ユーザーに関する情報が変更される前に必ず確認や承認を行うなど、アイデンティティ・システム・アプリケーションで実行されるアクションにビジネス・ロジックを適用できます。
アイデンティティ・システムのオブジェクト・テンプレート機能により、追加、削除または変更された情報を他のアプリケーションに伝播するようアイデンティティ・ワークフローを拡張できます。テンプレートの使用により、アイデンティティ・システムで非LDAPスキーマを管理できるため、非LDAPデータをワークフローやアイデンティティ・イベントAPIで使用できます。
この章の内容は次のとおりです。
ユーザー・マネージャ、グループ・マネージャおよび組織マネージャ・アプリケーションは、LDAPディレクトリまたはオブジェクト・テンプレートの情報に依存しています。
LDAPディレクトリ: ディレクトリの情報を構成することで、プロファイル・ページにデータを表示し、ユーザー、グループおよびオブジェクトに関するデータを操作するワークフローを構成します。LDAPディレクトリは、アイデンティティ・システムの正式なデータ・ソースです。
オブジェクト・テンプレート: オブジェクト・テンプレートの情報を手動で構成することで、アイデンティティ・ワークフロー・ステップの実行時に入力されたデータを異なるターゲット・データ・ソースに伝播できます。たとえば、非LDAPデータを使用するユーザーの追加またはユーザーの変更ワークフローを構成し、そのワークフローをアイデンティティ・イベントAPIで使用できます(詳細は、『Oracle Access Manager開発者ガイド』を参照してください)。
非LDAPデータをバックエンド・システムに送信する場合のプロセスは、次のとおりです。
タスクの概要: バックエンド・アプリケーション用の非LDAPデータの構成
オブジェクト・テンプレートを構成します(「オブジェクト・テンプレートの構成」を参照してください)。
テンプレートには、バックエンド・アプリケーションで認識可能なオブジェクトおよび属性が含まれている必要があります。
このファイルを次の場所に格納します。
IdentityServer_install_dir\oblix\config\template\xxx.tpl
ここで、IdentityServer_install_dirはアイデンティティ・システムがインストールされているディレクトリであり、xxxは.tplファイルの名前です。
アイデンティティ・システム・コンソールでテンプレート・オブジェクトおよび属性を構成します(「アイデンティティ・システムでのスキーマ・データの使用」を参照してください)。このとき、次のことに留意します。
ユーザーは、ワークフロー・ステップのコンテキストでのみテンプレート属性の値を指定できます。
テンプレート属性は、アイデンティティ・システムでは検索できません。
テンプレート属性に対する表示権限または変更権限は設定できません。
テンプレート属性のアクセス制御を構成するには、ワークフロー・ステップ参加者を定義します。ステップ参加者である個々のユーザーのみが、これらの属性にアクセスできます。
テンプレート属性は、導出属性として構成できません。
1つ以上のテンプレート属性を、ユーザー・マネージャなどのアイデンティティ・システム・アプリケーションに含まれるタブのパネルに関連付けます(「ユーザー・マネージャ、グループ・マネージャおよび組織マネージャの構成」を参照してください)。
ワークフローを作成し、テンプレート属性を1つ以上のワークフロー・ステップに関連付けます(「アイデンティティ機能とワークフローの連携」を参照してください)。
属性の表示名は、ワークフローに関連付けられたプロファイル・ページに表示されます。ただし、属性値は表示されません。この理由は、アイデンティティ・システムからターゲット・アプリケーションに向かう一方向のデータ・フローのみが存在するためです。(これらの属性値の表示を可能にするために、将来、双方向のデータ・フローが導入される予定です。)詳細は、「テンプレート・オブジェクト・データとワークフローの概要」を参照してください。
ワークフローで使用される各スキーマにデータを書き込む有効化やコミットなどの個別のステップがワークフローに存在することを確認します(「ユーザー・マネージャ、グループ・マネージャおよび組織マネージャの構成」を参照してください)。
アイデンティティ・イベントAPIおよびIdentityXMLを使用して外部アクションを構成し、オブジェクト・テンプレートのデータをバックエンド・アプリケーションに送信します(『Oracle Access Manager開発者ガイド』を参照してください)。
この章の残りの部分では、オブジェクト・テンプレートの機能と、オブジェクト・テンプレートの構成方法について説明します。
アイデンティティ・システムでは、次の場所で一般的なオブジェクト・テンプレート・スキーマ・ファイルを提供しています。
Identity_install_dir\oblix\config\template\
これは、このファイルと、構成される他の任意のオブジェクト・テンプレート・ファイルに必須の場所です。
このファイルに作成されるテンプレート・オブジェクトは、LDAPオブジェクトと似ています。主な違いは、LDAPオブジェクトおよび属性はユーザー・プロファイル・ページへのデータの表示とワークフローの構成に使用するのに対し、テンプレート・オブジェクトはワークフローでのみ使用することです。
テンプレート属性に対してアクションを実行する1つ以上のステップを備えたワークフローを構成できます。ユーザーがワークフローを起動すると、アイデンティティ・システムにより、関連するステップの実行中に入力されたデータがオブジェクト・テンプレート・スキーマの要件に従って書式設定されます。
ワークフローでは、テンプレート属性値が一時的にステップ・インスタンスに格納されます。コミット・ステップが実行されると、データはターゲットのバックエンド・システムに書き込まれます。データ・フローは一方向であるため、データがバックエンド・システムに書き込まれると、アイデンティティ・システムによるそのデータの格納は終了します。
最終的に、アイデンティティ・イベント・プラグインを作成して、オブジェクト・テンプレート・データをターゲットのバックエンド・システムに送信する必要があります。
前の項で説明したとおり、テンプレート属性を使用するワークフロー・ステップを構成して、非LDAPデータをバックエンド・アプリケーションに送信できます。ユーザーがワークフロー・ステップの一環として入力する属性値は、一度コミットされるとプロファイル・ページには表示されません。アイデンティティ・システムでは、ターゲット・アプリケーションを対象とするデータの送信は可能ですが、データの取得は不可能であるためです。
オブジェクト・テンプレートを使用するワークフローを構成する場合、オブジェクト・テンプレート・データとLDAPデータの両方を書き込むコミット・ステップを構成できます。これにより、ディレクトリを使用してプロファイル・ページにLDAP属性の値を表示するとともに、テンプレート属性の値を使用してバックエンド・アプリケーションにデータを送信できます。
アイデンティティ・システムからバックエンド・アプリケーションに向かうデータ・フローは一方向であるため、ユーザーはアイデンティティ・システムのデータを検証できません。ユーザーは、ターゲット・アプリケーションまたはそのログを参照して、ワークフローによりアプリケーションに作成されたデータを確認する必要があります。
バックエンド・システムへのデータの書込み中にエラーが発生した場合、アイデンティティ・イベントAPIプラグインによりアイデンティティ・システム・ユーザーにメッセージを戻すことができます。
注意: 1つのワークフロー・ステップですべてのデータ・ソースのデータをコミットすることはできません。ドメインごとに1つのコミット・ステップを構成する必要があります。 |
オブジェクト・テンプレート・ファイルには、オブジェクトと属性に関するスキーマに似た定義がXML形式で格納されます。オブジェクト・テンプレート・ファイルに構成されるオブジェクトと属性は、データの書込み先であるバックエンド・アプリケーションで認識可能な値に対応します。
すべてのオブジェクト・テンプレート・ファイルは、次の場所に存在する必要があります。
Identity_install_dir/oblix/config/template
ここで、Identity_install_dirは、アイデンティティ・システムがインストールされているディレクトリです。オブジェクト・テンプレート・ファイルの拡張子は、.tplです。
アイデンティティ・サーバーでは、起動時にテンプレート・ファイルが読み取られます。現在のインストール環境で複数のサーバーを使用している場合、同じテンプレート・ファイルを各サーバーにコピーする必要があります。
複数のテンプレート・オブジェクト・クラスを単一のファイルまたは複数のファイルに定義できます。同じドメイン内に複数のファイルを作成する場合、アイデンティティ・システムでは、属性およびクラスの一意性がファイル間で確保される必要があることに注意してください。ドメイン内に属性またはクラスがすでに存在する場合、テンプレート・ファイルはアイデンティティ・サーバーの起動時に登録されず、オブジェクトはシステム・コンソールに表示されません。
同様に、アイデンティティ・サーバーでは、構文エラーが存在する場合もテンプレート・ファイルを登録できません。かわりにログ・エントリが生成されます。
テンプレート・ファイルは、スキーマ・ドメイン文から始まります。スキーマ・ドメインにより、同じ名前を持ちながら異なるデータ・ソースで使用されるオブジェクト・クラス(LDAPのユーザー・オブジェクトとバックエンド・アプリケーションのユーザー・オブジェクトなど)の間のあいまいさが解消されます。
スキーマ・ドメイン文の例は、次のとおりです。
ObTemplateDefinition domain="exchange" version="1.0"/>
起動時に、アイデンティティ・サーバーによってドメイン文が読み取られます。表示用として、テンプレート・オブジェクトおよび属性は、アイデンティティ・システム・コンソールに次の形式で示されます。
attribute.class.domain
ここで、domainの名前は、.tplファイルのドメイン文から取得されます。
すべてのドメイン文は、一意である必要があります。一意ではないドメインがアイデンティティ・システムで検出されると、.tplファイル全体の読取りに失敗します。次のドメイン名は予約されており、.tplファイルでは使用できないことに注意してください。
MIIS
LDAP
オブジェクト・テンプレート・ファイルでは、名前/値ペアを任意に定義できます。これらの名前/値ペアは、ターゲット・アプリケーションで認識される形式に一致している必要があります。
テンプレート定義ファイルは、XML形式です。次に、このファイルの例を示します。
<?xml version="1.0" encoding="iso-8859-1"?> <ObTemplateDefinition domain="ABC_APPLICATION" version=1.0"> <!-- ObAttributeDefinition --> <ObAttributeDefinition name="cn" syntax="OB_CIS" maxlen="20"/> </ObAttributeDefinition> <ObAttributeDefinition name="sn" syntax="OB_CIS" maxlen="20"/> <ObAttributeDefinition name="mail" syntax="OB_CIS" maxlen="20"/> <ObAttributeDefinition name="phone" syntax="OB_CIS" maxlen="20"/> <!-- ObClassDefinition --> <ObClassDefinition name="User"> <ObAttributeReference name="cn" required="true"> </ObAttributeReference> <ObAttributeReference name="sn" required="false"> </ObAttributeReference> <ObAttributeReference name="mail" required="false"> </ObAttributeReference> <ObAttributeReference name="phone" required="false"> </ObAttributeReference> </ObClassDefinition> <ObClassDefinition name="Group"> <ObAttributeReference name="cn" required="true"/> <OBAttributeReference name="sn" required="false"/> <ObAttributeReference name="uniqueMember" required="false"/> </ObClassDefinition> </ObTemplateDefinition>
オブジェクト・テンプレート・ファイルに定義されたオブジェクトおよび属性は、次のようにアイデンティティ・システムに表示されます。
.tplファイルに定義された各オブジェクトは、アイデンティティ・システム・コンソールで次の項目を選択したときに表示されるページで選択できます。
「共通構成」→「オブジェクト・クラスの構成」→「追加」
アイデンティティ・システム・コンソールに表示されるオブジェクト・クラスの名前は、class.domainの形式です。クラス名は、.tplファイルの定義から取得されます。
.tplファイルのオブジェクトに関連付けられた各属性は、「共通構成」→「オブジェクト・クラスの構成」→オブジェクト・クラス・リンク→「属性の変更」を選択したときに表示されるページで選択できます。
アイデンティティ・システム・コンソールに表示される属性の名前は、attribute.class.domainの形式です。attributeの名前は、.tplファイルの定義から取得されます。
各属性文のsyntax要素により、「共通構成」→「オブジェクト・クラスの構成」→オブジェクト・クラス・リンク→「属性の変更」を選択したときに表示される属性のデータ型が決定されます。
アイデンティティ・システム・コンソールでテンプレート・オブジェクト属性のデータ型を選択することはできません。データ型は、属性定義のsyntax要素で構成する必要があります。
「共通構成」→「オブジェクト・クラスの構成」→オブジェクト・クラス・リンク→「属性の変更」を選択したときに表示される属性が単一値であるか複数値であるかは、.tplファイルの属性定義によって決定されます。
属性のその他の特性(表示名やセマンティク型など)は、アイデンティティ・システム・コンソールで構成できます。
アイデンティティ・システムでは、ドメインごとにただ1つのセマンティク型を使用する必要があります。たとえば、「ログイン」セマンティク型や「パスワード」セマンティク型は、ドメインごとに1つのみを割り当てることができます。
LDAP属性とは異なり、.tplファイルに構成された属性は、検索不可能であり、導出属性として構成できません。
オブジェクト・テンプレート・ファイルの要素は、次のとおりです。
オブジェクト・テンプレート・ファイルは、属性定義のリストから始まります。これらの属性は、後でこのファイルのオブジェクト定義内で参照されます。
表6-1 ObAttributeDefinitionの要素
要素名 | 説明 |
---|---|
name |
属性の名前。これは、アイデンティティ・システム・コンソールに表示される属性名に対応します。 このパラメータは必須です。 長さ: 32(最大) 形式: [(a-z)|(A-Z)][(a-z)|(A-Z)|(0-9)] |
syntax |
属性の構文。これは、アイデンティティ・システム・コンソールでの属性のデータ型に対応します。 このパラメータは必須です。 形式:
|
cardinality |
カーディナリティでは、単一値か複数値かを指定します。このパラメータは、アイデンティティ・システム・コンソールの単一または複数の属性値に対応します。このパラメータを複数値に設定した場合、アイデンティティ・システム・コンソールで単一値に再設定できます。ただし、.tplファイルで単一値に設定した場合、システム・コンソールでは再設定できません。 このパラメータはオプションです。 デフォルト: 特に指定のないかぎりmultiです。 形式: [single|multi] |
maxlen |
属性値のデータの最大長。 このパラメータはオプションです。 デフォルト: 特に指定のないかぎり-1です。この設定は、最大長が適用されないことを示します。 形式: -1または1〜n nは、妥当な最大長を示す整数です。 |
たとえば、次のようになります。
<ObAttributeDefinition name="c" syntax="OB_CIS" cardinality="single" /> <ObAttributeDefinition name="cn" syntax="OB_CIS" cardinality="single" />
.tplファイルでは、オブジェクト・クラスのリストが属性定義のリストの後に出現します。各オブジェクト・クラスには、ObClassDefinition文が含まれ、次にObAttributeReference文のリストが続きます。
表6-2 ObClassDefinitionの要素
要素名 | 説明 |
---|---|
name |
クラスの名前。この名前は、ドメイン内で一意である必要があります。 このパラメータは必須です。 長さ: 32(最大) 形式: [(a-z)|(A-Z)][(a-z)|(A-Z)|(0-9)] |
たとえば、次のようになります。
<ObClassDefinition name="User"> <ObClassDefinition name="Group">
属性は、.tplファイルのオブジェクト・クラス定義のAttributeReference文に含めることでオブジェクトに関連付けます。各ObAttributeReference文では、ObAttributeDefinition文に定義されている属性を参照する必要があります。
表6-3 属性とオブジェクトの関連付け
要素名 | 説明 |
---|---|
name |
テンプレート属性の名前。 このパラメータは必須です。 属性参照は、オブジェクト・クラス内で一意である必要があります。nameは、このドメインに含まれる既存の属性定義(ObAttributeDefinition)の名前である必要があります。 長さ: 32(最大) 形式: [(a-z)|(A-Z)][(a-z)|(A-Z)|(0-9)] |
required |
クラス定義のコンテキストにおいて、この属性が必須であるかオプションであるかを指定します。 このパラメータはオプションです。 デフォルト: false 形式: [true|false] |
たとえば、次のようになります。
<ObAttributeReference name="cn" required="true"> <ObAttributeReference name="mail" required="false">
次に、オブジェクト・テンプレート・ファイルの例を示します。
<?xml version="1.0" encoding="iso-8859-1"?> <ObTemplateDefinition domain="myapplication" xmlns:dsml="http://www.dsml.org/DSML" xmlns:oblix="http://www.oblix.com/"> <ObAttributeDefinition name="c" syntax="OB_CIS" cardinality="single" /> <ObAttributeDefinition name="cn" syntax="OB_CIS" cardinality="single" /> <ObAttributeDefinition name="department" syntax="OB_CIS" cardinality="single"/> <ObAttributeDefinition name="l" syntax="OB_CIS" cardinality="single" /> <ObAttributeDefinition name="location" syntax="OB_CIS" cardinality="single" /> <ObAttributeDefinition name="mail" syntax="OB_CIS" cardinality="single" /> <ObAttributeDefinition name="ou" syntax="OB_CIS" cardinality="single" /> <ObAttributeDefinition name="uid" syntax="OB_CIS" cardinality="single" /> <ObClassDefinition name="person"> <ObAttributeReference name="c" required="false" /> <ObAttributeReference name="cn" required="false" /> <ObAttributeReference name="department" required="false" /> <ObAttributeReference name="l" required="false" /> <ObAttributeReference name="location" required="false" /> <ObAttributeReference name="mail" required="false" /> <ObAttributeReference name="ou" required="false" /> <ObAttributeReference name="uid" required="false" /> <ObClassDefinition name="organizationalUnit"> <ObAttributeReference name="l" required="false" /> <ObAttributeReference name="ou" required="false" /> </ObClassDefinition> <ObClassDefinition name="locality"> <ObAttributeReference name="l" required="false" /> </ObClassDefinition> <ObClassDefinition name="country"> <ObAttributeReference name="c" required="false" /> </ObClassDefinition> <ObClassDefinition name="computer"> <ObAttributeReference name="cn" required="false" /> <ObAttributeReference name="l" required="false" /> <ObAttributeReference name="location" required="false" /> <ObAttributeReference name="ou" required="false" /> </ObClassDefinition> <ObClassDefinition name="group"> <ObAttributeReference name="cn" required="false" /> <ObAttributeReference name="mail" required="false" /> <ObAttributeReference name="ou" required="false" /> <ObAttributeReference name="uid" required="false" /> </ObClassDefinition> <ObClassDefinition name="role"> <ObAttributeReference name="l" required="false" /> <ObAttributeReference name="ou" required="false" /> </ObClassDefinition> </ObTemplateDefinition>
アイデンティティ・システム・ワークフローからバックエンド・アプリケーションにデータを送信するプラグインを作成する方法の詳細は、『Oracle Access Manager開発者ガイド』を参照してください。このプラグインを作成する場合の留意事項は、次のとおりです。
アイデンティティ・イベントAPIを使用したバルク再アクティブ化操作は、実行できなくなりました。
IdentityXMLおよびアイデンティティ・イベントAPIを使用する場合、アイデンティティ・システムから属性を送信する際に使用できるアクションは、Replace Allのみです。AddまたはReplaceを使用してIdentityXML文を作成すると、その文はReplace Allを使用している場合と同様に処理されます。