LDAPマッピング
LDAPリポジトリは複数のエントリで構成されます。各エントリは、識別名(DN)で識別されるディレクトリ内のオブジェクトを表し、1つ以上の属性を含めることができます。一般的なLDAPリポジトリには、通常、ユーザー用のエントリとグループ用のエントリがあります。ユーザーとグループの間の接続は、2つの方法で実装できます。
-
グループに属するユーザーは、グループ・エントリの特別な複数値属性で定義されます。
-
ユーザーが属するグループは、ユーザー・エントリの特別な複数値属性で定義されます。
LDAPセキュリティ・オブジェクトと基本セキュリティ・オブジェクトの間のマッピングは、LDAPインポート・バッチ・ジョブで処理可能なXMLドキュメントに格納されます。LDAPインポート用にシステムを設定するときは、このマッピングを定義する必要があります。基本パッケージにはldapdef.xmlというサンプルのマッピング・ファイルが用意されており、これを開始ポイントとして使用し、ビジネス要件および使用する特定のLDAPリポジトリに従って変更することができます。
マッピングXMLドキュメントを定義すると、これはF1-LDAPバッチ・ジョブでパラメータとして構成されます。
XML構造では次の処理を実行します。
-
LDAPEntry要素は、LDAPエントリをシステム・オブジェクト(ユーザーまたはグループ)にマップします。マッピング・ファイルには、LDAPEntry要素をユーザーおよびグループに対してそれぞれ1つのみ含める必要があります。
-
LDAPEntry要素内のLDAPCDXAttrMapping要素は、LDAPエントリ内の属性をシステム・オブジェクト内の属性にマップします。
-
LDAPEntryLinks要素は、LDAPエントリにリンクされたオブジェクトを記述します。ユーザー・エンティティをマッピングするときは、ユーザーが属するグループの取得方法を記述する必要があります。グループ・エンティティをマッピングするときは、グループに含まれるユーザーの取得方法を記述する必要があります。
次の表では、各要素に定義する属性を説明します。
要素 |
属性 |
摘要 |
---|---|---|
LDAPEntry |
name |
LDAPエントリの名前。 - Group - User |
baseDN |
このエントリのLDAP内の基本識別名。 |
|
cdxEntity |
LDAPエントリがマップされる基本製品エンティティの名前。 - Group - User |
|
searchFilter |
LDAPエントリの検索に使用するLDAP検索フィルタ。このフィルタ内の%searchParm%文字列は、F1-LDAP バッチ・ジョブ発行からのユーザーまたはグループのパラメータ値で置換されます。 |
|
Scope |
検索の範囲を設定します。有効な値は次のとおりです。 - onelevel(通常はこの値を使用) - subtree |
|
LDAPCDXAttrMapping |
ldapAttr |
マップされるLDAP属性の名前。1つのLDAP要素を複数の基本製品要素にマップできるようにするために、これは複数回参照できることに注意してください。たとえば、Eメール・アドレスを「ログインID」と「Eメール・アドレス」の両方に使用する必要がある場合があります。 |
cdxName |
マップされる基本製品属性の名前。 ユーザーの場合、これはF1-IDMUserビジネス・オブジェクト内の要素です。 グループの場合、これは'group'または'description'のいずれかです。 |
|
default |
次のいずれかが発生したときにcdxName属性で参照される要素に割り当てられるデフォルト値です。 - LDAP属性がNullまたは空の値の場合。 - LDAP属性が存在しない、または指定されていない場合。 デフォルト値は新規エンティティの作成時のみ適用され、更新されたエンティティには適用されません。 |
|
autoGenerate |
ユーザーIDの自動生成をオンにするには、これを「真」に設定します。これが「真」の場合、ユーザーIDは、すべて大文字で<名の最初の頭文字>+<姓>として最大8桁で定義されます。生成されたIDの既存のユーザーが見つかった場合、8つ目の桁が数字に置換されます(または数字が末尾に追加されます)。一意のIDが見つかるまで、その数字は増分されます。 |
|
transform |
この属性を使用して、データの変換を行う必要があるかどうかを示します。有効な値はuppercase|truncateです。この属性はautoGenerate属性と組み合せて使用しないでください。 |
|
LDAPEntryLink |
linkedToLDAPEntity |
リンクされるエンティティの名前(「User」または「Group」)。グループ・エンティティを記述する場合は「User」を使用します。ユーザー・エンティティを記述する場合は「Group」を使用します。 |
linkingLDAPAttr |
リンクされるエンティティが格納される、LDAPエンティティの複数値属性の名前。 |
|
linkingSearchFilter |
リンクされるオブジェクトのリストを取得するために適用される検索フィルタで、次に例を示します。 (&(objectClass=group)(memberOf=%attr%)) 検索フィルタには置換文字列として機能する文字列%attr%を含めることができますが、実行時には、インポートしたエンティティのattrという名前の属性の値に置換されます。記述するLDAPエントリがグループで、文字列が%name%の場合は、インポートするグループのname属性の値に置換されます。記述するLDAPエントリがユーザーで、文字列が%dn%の場合は、インポートするユーザーのdn属性に置換されます。 |
|
linkingSearchScope |
検索の範囲を設定します。有効な値は次のとおりです。 - onelevel (通常はこの値を使用) - subtree |
サンプルのマッピング
次のXMLはサンプルのマッピングです。この例では、次のことを前提としています。
-
新しいユーザーを追加するとき、基本製品属性displayProfileCodeは"NORTHAM"にデフォルト設定されています。
-
LDAPグループ・エントリには、グループに属するユーザーのリストがdepartmentNumber属性に含まれています。
-
ユーザーが属するグループは、検索フィルタを適用して取得されます。
<LDAPEntries>
<LDAPEntry name=" User" baseDN="ou=people,dc=example,dc=com" cdxEntity="
user" searchFilter=" (&(objectClass=inetOrgPerson)(uid=%searchParm%))">
<LDAPCDXAttrMappings>
<LDAPCDXAttrMapping ldapAttr="uid" cdxName=" user" />
<LDAPCDXAttrMapping ldapAttr="cn" cdxName="externalUserId" />
<LDAPCDXAttrMapping cdxName="language" default=" ENG" />
<LDAPCDXAttrMapping ldapAttr="givenName" cdxName="firstName"/>
<LDAPCDXAttrMapping ldapAttr="sn" cdxName= "lastName"/>
<LDAPCDXAttrMapping cdxName="displayProfileCode" default="NORTHAM" />
<LDAPCDXAttrMapping cdxName="toDoEntriesAge1" default="30" />
<LDAPCDXAttrMapping cdxName="toDoEntriesAge2" default="90" />
<LDAPCDXAttrMapping cdxName="userEnable" default="ENBL"/>
</LDAPCDXAttrMappings>
<LDAPEntryLinks>
<LDAPEntryLink linkedToLDAPEntity="Group" linkingLDAPAttr="departmentNumber" />
</LDAPEntryLinks>
</LDAPEntry>
<LDAPEntry name="Group" baseDN="ou=people,dc=example,dc=com" cdxEntity="
Group" searchFilter=" (&(objectClass=organizationalUnit)(ou=%searchParm%))">
<LDAPCDXAttrMappings>
<LDAPCDXAttrMapping ldapAttr="name" cdxName="Group" />
<LDAPCDXAttrMapping ldapAttr="description" cdxName=" Description" default="Unknown" />
</LDAPCDXAttrMappings>
<LDAPEntryLinks>
<LDAPEntryLink linkedToLDAPEntity="User" linkingSearchFilter="
(&(objectClass=inetOrgPerson)(departmentNumber=%distinguishedName%))"
linkingSearchScope="onelevel" />
</LDAPEntryLinks>
</LDAPEntry>
</LDAPEntries>