この章では、Oracle Virtual DirectoryのJavaプラグインについて説明します。この章の内容は次のとおりです。
プラグインを使用すると、情報の区分化機能でOracle Virtual Directoryを拡張し、特定のビジネスや技術の要件に対応することができます。また、プラグインを使用して、カスタム・ロジックをトランザクションの一部として提供することや、カスタム・データ・ソースに簡単に接続することができます。Oracle Virtual Directoryは、JavaプラグインおよびPythonマッピング・プラグインの2種類をサポートしています。
注意: この章は、Oracle Virtual Directory用のJavaプラグインに特化していますが、操作上、Oracle Virtual Directoryではこれら2種類のプラグインは同等に扱われます。この章では、プラグインはJavaプラグインを表します。マッピング・プラグインの詳細は、第5章「Oracle Virtual Directoryのマッピングの概要」を参照してください。 |
Oracle Virtual Directoryには、分析、監査、キャッシング、動的グループのプレゼンテーションなど各種の目的に応じたプラグインがいくつか用意されています。また、様々な方法を使用してプラグインをデプロイすることで、仮想ディレクトリ内でのプラグインの配置を完全に制御できます。次に例を示します。
プラグインを「接続」し、結合された再利用可能な機能を構築する。
プラグインがすべてのリクエストとレスポンスを処理するように、「グローバル」サーバー・レベルでプラグインをデプロイする。
プラグインが特定のアダプタに対するリクエストとレスポンスを処理するように、アダプタ・レベルでプラグインをデプロイする。
たとえば、特定のMicrosoft Active Directoryサーバー上のみで、Active Directoryユーザーの標準inetOrgPersonオブジェクト・クラスへの変換を行うマッピングが実行された後にのみ実行されるCacheプラグインをデプロイすることができます。
注意:
|
図4-1に、Oracle Virtual Directoryのプラグイン・フレームワークの3層アーキテクチャを示します。
プラグインはチェーンを形成するように配置されています。Oracle Virtual Directoryがリクエストを受信すると、リクエストは次の順序でOracle Virtual Directoryに渡されます(図4-1を参照)。
グローバル・サービス・インタフェース(GSI)
グローバル・プラグインのチェーン
アダプタ・サービス・インタフェース(ASI)
アダプタ・プラグインのチェーン
グローバル・プラグインは、すべてのリクエストに対してコールされます。インバウンド・リクエストの場合、すべてのグローバル・プラグインが実行されると、リクエストはASIに移動します。ASIは、ルーティングおよびアダプタの処理が決定されるOracle Virtual Directoryのコンポーネントです。ルーティング・システムによりリクエストにどのアダプタが含まれるかが決定されると、選択されたアダプタ・プラグインが実行されます。アダプタによりレスポンスが生成され、さらに処理およびフィルタ処理を実行するためにチェーンに戻されます。
Oracle Virtual Directoryでは、プラグインをグローバルに実行するか、または1つのアダプタのコンテキスト内で実行するかを柔軟に判断できます。状況によっては、プラグインがいつ使用されるかをさらに制限する必要が生じる場合もあります。たとえば、アダプタがMicrosoft Active Directoryドメインのかわりになるように設定され、DC=VAN,DC=Oracle,DC=comを指しているとします。ドメイン・ツリー内のそのポイントの下には、CN=UsersコンテナおよびCN=Groupsコンテナがあります。プラグインまたはマッピングにネームスペース・フィルタを追加すると、ツリーの一部にのみそれらを適用できます。
この項では、Oracle Virtual Directoryに組み込まれている汎用目的のプラグインについて説明します。汎用目的のプラグインは、Oracle Virtual Directoryの機能を拡張して、特殊な機能またはマッピングを実行します。この項の内容は、次のとおりです。
FA UserRoleプラグインは、VDEが追加および変更操作を特定のアダプタにリダイレクトできるようにします。このプラグインは、グローバル・プラグインとしてのみ使用してください。
FA UserRoleプラグインには次の構成パラメータがあります。
アダプタ名のリストが後に続くattribute=valueタイプのフィルタ。このアダプタ名のリストは、指定された順序でアダプタのリストに追加および変更操作をリダイレクトするために使用されます。
この構成の複数のインスタンスを定義できます。たとえば、objectclass=user;A1;A2
は、user objectclassのエントリがある場合、そのエントリに対する追加および変更操作は最初にアダプタA1にリダイレクトされることを意味します。A1に一致するものがない場合、操作はA2で実行されます。別の例として、cn=user1;A3
があります。
HideEntriesByFilterプラグインは、検索によってどのエントリを戻すのかを詳細に制御できるようにします。HideEntriesByFilterプラグインは、そのhideFilter
構成パラメータを使用してどのエントリを戻すのかを明示的に制御できるようにします。たとえば、Oracle Virtual Directoryをアドレス帳ディレクトリとして使用していて、技術サポートのエントリ(ou値がCSR)のみを表示する必要があるとします。hideFilterをou=CSRに設定してHideEntriesByFilterプラグインを使用し、アダプタが検索されたときに技術サポートのエントリのみが戻されるようにすることができます。
バインド操作のサポート
HideEntriesByFilterプラグインをデプロイすると、プラグインによって公開されるエントリのみがバインド操作を実行できるようになります。このプラグインは、検索中に非表示になっているエントリによるバインド操作の実行を防止します。バインド操作中はHideEntriesByFilterプラグイン・パラメータで構成される静的非表示フィルタおよびLdapURLのみが有効になり、動的非表示フィルタは有効になりません。
HideEntriesByFilterプラグインには、次の構成パラメータがあります。
検索に対して制限するエントリを制御するLDAPフィルタ。このフィルタには、静的フィルタまたは動的フィルタを含めることができます。
たとえば、静的フィルタを作成する場合、hideFilter
を(department=Sales)に設定すると、検索ではdepartment=Salesを含むエントリのみが戻されます。ただし、hideFilter
を(!(department=Sales))に設定すると、検索ではdepartment=Salesを含まないエントリのみが戻されます。
動的フィルタは認証済ユーザーの属性値に基づいて作成します。動的フィルタは、「バインドされたユーザーと部門が同じユーザーをすべて取得する。ただし、アプリケーションでは、LDAP検索フィルタにこの基準を指定する必要はない。」などのユースケースをサポートできます。
たとえば、hideFilter
を(department=%department%)に設定すると、このプラグインによって%department%
が、そのバインドされたユーザーと関連付けられた実際の部門の値に置換されます。バインドされたユーザーのエントリに指定された属性の値が複数ある場合は、そのすべての値にOR
を指定することでフィルタが作成されます。
エントリDNに基づいて検索結果をさらに制限するために使用されるパラメータ。検索結果の一部として戻されるエントリがURLフィルタを満たす場合、そのエントリは、それがそのURLベースの子である場合にのみクライアントに戻されます。エントリがURLフィルタを満たさない場合、エントリはそのまま戻されます。
このパラメータは、1つのプラグイン構成で複数回使用できます。少なくともhideFilter
またはldapURL
のいずれかの構成パラメータを設定する必要があります。
プラグインが1つのアダプタにデプロイされており、バインドされたユーザーが別のアダプタに存在している場合に使用されるパラメータ。このパラメータは、アダプタのリストをとり、1つのプラグイン構成で複数回使用できます。
動的フィルタを処理するために、ユーザーはadapterNames
で指定されているすべてのアダプタで問い合わせられます。ユーザーを戻すことなくすべてのアダプタに対する検索が失敗した場合、動的フィルタは無視され、元の検索フィルタが次のプラグインに送られます。
管理者に対してプラグインの処理を実行するかどうかを制御するブール値。このパラメータをfalse
に設定しており、かつバインドされたユーザーがadmin
である場合、検索結果はこのプラグインでさらにフィルタ処理されることなく、そのままの状態で戻されます。
ChangeUserRDNプラグインで、ソース・ディレクトリからOracle Virtual DirectoryにRDN値を名前変更または置換できます。このプラグインはLDAPディレクトリの移行の際に役立ちます。
ChangeUserRDNプラグインには、次の構成パラメータがあります。
RDNの名前変更を実行するオブジェクト・クラスのタイプを指定します。デフォルト設定はpersonです。
TrueまたはFalse: 元のRDN値(fromRDN
パラメータで指定する)を新しいRDN値(toRDN
パラメータで指定する)に置き換えるかどうかを指定します。デフォルト設定はtrueです。
注意: この値がtrueに設定されており、エントリでその新しいRDN属性に複数の値がある場合、Oracle Virtual DirectoryではRDNの属性値ベクターの最初の値が使用されます。 |
Oracle Virtual Directoryで置換または名前変更される、ソース・ディレクトリの元のRDN属性名を指定します。
Oracle Virtual Directoryで使用される新しいRDN属性名を指定し、fromRDN構成パラメータで指定されている属性名と置き換えます。
RDNの名前変更を実行するDNを持つ属性のリスト。属性のデフォルト・リストは、member、uniquemember、manager、owner、managedbyです。
UPNBindプラグインにより、任意の構成済のusername属性(cn、SamAccountName、sn、uidなど)またはusername@suffix属性(UserPrincipalName、Mailなど)を使用してバインドできます。このプラグインは、Active Directory中心のアプリケーションで役立ち、DNを検索する必要性を排除することでアダプタのデプロイメントを容易にすることができます。
注意: UPNBindプラグインは、グローバル・プラグインとしてのデプロイメントに対してのみサポートされています。UPNBindプラグインをアダプタにデプロイしないでください。 |
UPNBindプラグインには、次の構成パラメータがあります。
注意: 少なくともNameAttributesまたはNameAndSuffixAttributesのいずれかの構成パラメータを設定する必要があります。 |
ユーザーを認証するために使用するnaming属性のリストを指定します。たとえば、cn、sn、uid、SAMAccountNameです。
ユーザーを認証するために使用する、UPN、mailなどのname@suffixの形式の属性のリスト。
複数のユーザーがNameAttributesおよびNameAndSuffixAttributesのパラメータに同じ値を持っている場合に、UPNBindプラグインが結果のエントリを処理する方法を決定します。次に、BindOptionオプションでサポートされている値のリストと説明を示します。デフォルト設定はQuickFailです。
QuickFail: 構成済の属性に対して複数のユーザーが同じ値を持っている場合、UPNBindプラグインによって複数のユーザー・エントリが見つかりましたエラーが表示され、LDAPバインドは失敗します。
FirstUser: UPNBindプラグインは最初のユーザーとしてバインドし、そのバインドの結果を戻します。
FirstSuccess: UPNBindプラグインは最初のユーザーとしてバインドします。そのバインドに失敗すると、UPNBindプラグインは、成功したバインドが見つかるまでリストのすべてのユーザーに対して試行を続けます。
認証に使用するアダプタを指定します。指定したアダプタにそのユーザー・エントリが存在しない場合、LDAPバインドは失敗し、「無効な資格証明」メッセージが表示されます。これはオプションのパラメータです。このパラメータを指定しない場合、このプラグインでは、ユーザーを認証するために使用可能なすべてのアダプタが考慮されます。このパラメータは、認証にどのアダプタを使用するのかわかっている場合にプラグインのパフォーマンスの向上に役立ちます。
ForkJoinプラグインは、結合ビュー・アダプタに対してのみサポートされており、プライマリ・アダプタ、セカンダリ・アダプタ、または結合ビューでプライマリとセカンダリの両方のアダプタに対する検索の実行を可能にします。LDAP検索の際に、セカンダリ・アダプタでのみ使用可能な属性が検索フィルタに1つ以上含まれている場合、このプラグインを使用しないと、検索フィルタ全体がプライマリ・アダプタにのみ送られるため、Oracle Virtual Directoryはそのフィルタを満たす結合エントリを戻すことができません。ForkJoinプラグインを使用すると、Oracle Virtual Directoryは、プライマリ・アダプタ内のみの属性、セカンダリ・アダプタ内のみの属性、およびプライマリとセカンダリの両方のアダプタ内の属性を検索できます。
たとえば、ユーザー・データがActive Directoryのsamaccountname、sn、givenname、employeenumberという複数のアイデンティティ・ソースに置かれているとします。ただし、title属性はHuman Resourcesデータベースに格納されています。Active Directoryがプライマリ・アダプタとして、Human Resourcesデータベースがセカンダリ・アダプタとして構成されており、ForkJoinプラグインがデプロイされている場合、LDAP対応アプリケーションがsamaccountname、またはtitle、あるいはその両方に基づいてユーザー・データの問合せを実行すると、Oracle Virtual Directoryがそのフィルタを満たし、かつActive DirectoryとHuman Resourcesデータベースの両方のデータを含むエントリを戻します。
バインド操作のサポート
ForkJoinプラグインを結合アダプタに対してデプロイしており、JoinPolicyがFullOuterJoinに設定されている場合、バインドは、プライマリ・アダプタに存在しない、セカンダリのみのユーザーに対しても可能になります。
ForkJoinプラグインには、次の構成パラメータがあります。
注意: ForkJoinプラグインをデプロイするには、少なくともSecondaryOnlyAttributesまたはPrimaryAndSecondaryAttributesのいずれかの構成パラメータを設定する必要があります。 |
セカンダリ・アダプタにのみ存在し、アプリケーションが検索フィルタで使用できる属性のリスト。SecondaryOnlyAttributes構成パラメータで指定した属性をPrimaryAndSecondaryAttributes構成パラメータでも指定することはできません。
プライマリとセカンダリの両方のアダプタに存在し、アプリケーションが検索フィルタで使用できる属性のリスト。PrimaryAndSecondaryAttributes構成パラメータで指定した属性をSecondaryOnlyAttributes構成パラメータでも指定することはできません。
注意: objectclass属性は、明示的に構成されていない場合でも、デフォルトで常にPrimaryAndSecondaryAttributesであると見なされます。 |
次の設定をサポートしています。
Standard Join: セカンダリ・アダプタで対応するエントリと結合した後、プライマリ・アダプタで検索フィルタを満たすすべてのエントリを戻します。
Left Outer Join: セカンダリ・アダプタの対応するエントリと結合した後、プライマリ・アダプタのすべてのエントリを戻し(Standard Join)、さらに、セカンダリ・アダプタの、結合条件を満たし、かつプライマリ・アダプタに対応する一致があるエントリを戻します。これは、データベース用語の左側外部結合と同等です。
Full Outer Join: セカンダリ・アダプタの対応するエントリと結合した後、プライマリ・アダプタのすべてのエントリを戻し(Standard Join)、さらに、セカンダリ・アダプタの、結合条件を満たし、かつプライマリ・アダプタに対応する一致があるエントリを戻し(Left Outer Join)、さらに、検索フィルタを満たすがプライマリ・アダプタに一致するエントリがないエントリを戻します。これは、データベース用語の左側外部結合+右側外部結合と同等です。
注意: Full Outer Joinが構成されている場合の条件付き結合については、セカンダリ・アダプタのエントリは、結合条件のフィルタを考慮することなくプライマリ・アダプタのエントリにマップされます。 |
この項では、ForkJoinプラグインのデプロイメント例を示します。次のデータが、プライマリ・アダプタおよびセカンダリ・アダプタに配置されています。プライマリ・アダプタのネームスペースはdc=primary、セカンダリ・アダプタのネーム・スペースはdc=secondaryです。
プライマリ・アダプタのデータ | セカンダリ・アダプタのデータ |
---|---|
dn: cn=Rock, dc=primary objectclass: inetorgperson cn: Rock sn: Anne givenname: Anne rock telephonenumber: 54300 |
dn: cn=Rock, dc=secondary objectclass: inetorgperson cn: Rock sn: Anne title: Manager |
dn: cn=Sandy, dc=primary objectclass: inetorgperson cn: Sandy sn: Ketty manager: cn=Rock, dc=primary telephonenumber: 54301 |
dn: cn=Sandy, dc=secondary objectclass: inetorgperson cn: Sandy sn: Ketty title: SMTS |
dn: cn=Rivry,dc=primary objectclass: inetorgperson cn: Rivry sn: Rod title: Trainee manager: cn=Rock, dc=secondary telephonenumber: 54303 description: Trainee for dept 543 departmentNumber: 543 |
dn: cn=Rivry,dc=secondary objectclass: inetorgperson cn: Rivry sn: Rod title: Trainee |
dn: cn=Woods,dc=primary objectclass: inetorgperson cn: Woods sn: Tent description: User with no title |
dn: cn=Mounty,dc=secondary objectclass: inetorgperson cn: Mounty sn: Ret title: MTS - dept_sec |
結合条件はcn=cn
であり、SecondaryOnlyAttributesパラメータがtitleに設定されています。サブツリー有効範囲と(|(title=*e*)(sn=*e*))
のフィルタを指定したldapsearchを、結合ビュー・アダプタに対して実行します。
JoinPolicyのタイプごとの検索結果は次のとおりです。
Standard Join:
cn=Rock,dc=Join sn=Anne cn=Rock title=Manager cn=Sandy,dc=Join sn=Ketty cn=Sandy title=SMTS cn=Woods,dc=Join sn=Tent cn=Woods
Left Outer Join:
cn=Rock,dc=Join sn=Anne cn=Rock title=Manager cn=Sandy,dc=Join sn=Ketty cn=Sandy title=SMTS cn=Woods,dc=Join sn=Tent cn=Woods cn=Rivry,dc=Join sn=Rod cn=Rivry title=Trainee
Full Outer Join:
cn=Rock,dc=Join sn=Anne cn=Rock title=Manager cn=Sandy,dc=Join sn=Ketty cn=Sandy title=SMTS cn=Woods,dc=Join sn=Tent cn=Woods cn=Rivry,dc=Join sn=Rod cn=Rivry title=Trainee cn=Mounty,dc=Join sn=Ret cn=Mounty title=MTS - dept_sec
VirtualMemberofプラグインは、memberof属性をpersonエントリに追加します。このmemberof属性の値は、そのpersonエントリが属するすべてのグループのDNです。VirtualMemberofプラグインは、アプリケーションがグループ・メンバーシップを確認する必要があるが、グループに対する2つ目の検索の実行を回避する場合に役立ちます。
VirtualAttributeプラグインにより、マッピングをデプロイせずに複数の属性で属性データを再使用できます。たとえば、新しいアプリケーションで、ある人の姓名を表示に使用する必要がある場合、アプリケーションではcnを検索するかわりにdisplayname属性を使用する必要があるが、それがアダプタ・データに存在しないとします。VirtualAttributeプラグインを使用すると、displaynameをcnの値にマップでき、かつcn属性を検索する他のアプリケーションがその属性を依然として使用できるようにすることができます。displayname属性がアダプタ・データにすでに存在している場合、displaynameの既存の値にcnの値を追加するか、displaynameの値をcnの値に置き換えるのかを指定できます。
属性値の追加および置換に加えて、VirtualAttributeプラグインを使用して、次のように実行することもできます。
他の属性およびリテラル値を使用することで属性をその場で作成する。
ConditionalPublishマッピングの機能を実行する。つまり、RemoveAttributes構成パラメータを使用すると、属性がクライアントに戻される前にエントリから実際に削除される属性を指定できます。
注意: VirtualAttributeプラグインで追加または置換される属性に対して定数値を指定できます。 AddAttributeパラメータとReplaceAttributeパラメータでは、仮想属性に たとえば、エントリDN(名)値をdistinguishedNameに追加するには、AddAttributeパラメータの値を |
VirtualAttributeプラグインには、次の構成パラメータがあります。
注意: 最低でも、AddAttributeまたはReplaceAttributeのいずれかの構成パラメータを設定する必要があります。 |
オフションのパラメータであるContainerDNは、VirtualAttributeプラグインが適用されるコンテナを指定します。VirtualAttributeプラグインは、containerDNの下のmatchFilterパラメータで指定されたフィルタに一致するすべてのエントリに適用できます。このパラメータは、繰り返し使用して複数のcontainerDNを指定できます。また、このパラメータは、VirtualAttributeプラグインを、アダプタによって公開されるデータ内の特定のブランチに制限します。デフォルト設定は""、つまりDSEです。ContainerDNパラメータを設定しないと、VirtualAttributeプラグインはディレクトリ・ツリー全体を検索します。
オフションのパラメータであるMatchFilterは、VirtualAttributeプラグインが適用されるエントリを指定します。VirtualAttributeプラグインは、containerDNの下のMatchFilterパラメータで指定されたフィルタに一致するすべてのエントリに適用できます。MatchFilterパラメータを設定しないと、VirtualAttributeプラグインは、ContainerDNパラメータによって指定されるDNの下のすべてのエントリに適用されます。
エントリに追加する属性のリストおよび、これらの仮想属性に割り当てる値。AddAttributeパラメータによって指定された属性がすでにエントリに存在している場合、VirtualAttributeプラグインは、指定された値を値の既存のセットに追加します。この値は、定数、別の属性、または属性値と定数の組合せにすることができます。
AddAttributeパラメータは、VirtualAttributeプラグインに対して複数回設定できます。AddAttributeパラメータに設定する値は、ReplaceAttributeと相互に排他、つまり異なる必要があります。
次に例を示します。
cn属性の値をuidおよびdisplayNameに追加するには、AddAttributeパラメータの値をuid=displayName=%cn%
に設定します。
定数値AcmeをcompanyName属性に追加するには、AddAttributeパラメータの値をcompanyName=Acme
に設定します。
cn、snおよびdcの値の組合せをmember属性に追加するには、AddAttributeパラメータ値をmember={cn=%cn%, sn=%sn%, dc=oracle, dc=com}
に設定します。
注意: 中カッコ( |
AddAttributeパラメータでは、仮想属性に値ペアを含むリストを割り当てることができます。Oracle Virtual Directoryでは、クライアント・アプリケーションとバックエンド・ストレージの間の値のマッピングを実行できます。
このフォーマットの値を入力します。
<attributename> = (clientValue1, sourceValue1)(clientValue2, sourceValue2)...
たとえば、departmentName属性のクライアント・アプリケーション値が(1,2,3)で、対応するバックエンド・ストレージ値が(Marketing, Sales, Finance)であると仮定します。Oracle Virtual Directoryでマッピングする場合は、パラメータ値をdepartmentName=(1,Marketing)(2,Sales)(3,Finance)
として構成します。
別の例では、エントリが従業員用あるいは顧客用かを示すためにUserType
仮想属性を追加することで、従業員用にActive Directoryを、顧客用にOracle Unified Directoryを使用するようにOracle Virtual Directoryを構成するとします。
Active Directoryアダプタを構成するには、UserType=
Employee
に設定したAddAttributeパラメータを使用して、VirtualAttributeプラグインをデプロイする必要があります。
Oracle Unified Directoryアダプタを構成するには、UserType=
Customer
に設定したAddAttributeパラメータを使用して、VirtualAttributeプラグインをデプロイする必要があります。
この構成のエントリでは、追加の仮想属性UserType
が含まれており、それらを返すアダプタに応じて、Employee
またはCustomer
の値が指定されます。
エントリに追加する属性のリストおよび、これらの仮想属性に割り当てる値。ReplaceAttributeパラメータによって指定された属性がすでにエントリに存在している場合、VirtualAttributeプラグインは、指定された値を使用してそれらを置換します。この値は、定数、別の属性、または属性値と定数の組合せにすることができます。
ReplaceAttributeパラメータは、VirtualAttributeプラグインに対して複数回設定できます。ReplaceAttributeパラメータに設定する値は、AddAttributeと相互に排他、つまり異なる必要があります。
次に例を示します。
uidおよびdisplayNameの値をcn属性の値に置き換えるには、ReplaceAttributeパラメータをuid=displayName=%cn%
のように構成できます。
companyName属性の値を定数値Acmeに置き換えるには、ReplaceAttributeパラメータをcompanyName=Acme
のように構成できます。
member属性値をcn、snおよびdcの値の組合せに置き換えるには、ReplaceAttributeパラメータをmember={cn=%cn%, sn=%sn%, dc=oracle, dc=com}
のように構成します。
注意: 中カッコ( |
ReplaceAttributeパラメータでは、仮想属性に値ペアを含むリストを割り当てることができます。Oracle Virtual Directoryでは、クライアント・アプリケーションとバックエンド・ストレージの間の値のマッピングを実行できます。
このフォーマットの値を入力します。
<attributename> = (clientValue1, sourceValue1)(clientValue2, sourceValue2)...
たとえば、departmentName属性のクライアント・アプリケーション値が(1,2,3)で、対応するバックエンド・ストレージ値が(Marketing, Sales, Finance)であると仮定します。Oracle Virtual Directoryでマッピングする場合は、パラメータ値をdepartmentName=(1,Marketing)(2,Sales)(3,Finance)
として構成します。
指定されたContainerDNの下でMatchFilterを満たすエントリから実際に削除される属性のカンマ区切りリスト。
次に示すVirtualAttributeプラグイン構成パラメータが設定されているとします。
構成パラメータ | 値 |
---|---|
AddAttribute |
uid=displayName=%cn% |
AddAttribute |
certificate=Verisign |
AddAttribute |
member={cn=%cn%, sn=%sn%, dc=oracle, dc=com} |
ReplaceAttribute |
title=%designation% |
RemoveAttributes |
designation,uid |
処理される元のエントリは次のとおりであるとします。
dn: cn=john, dc=com cn: john cn: jsmith uid: 1234 certificate: selfsigned designation: SMTS title: Senior Software Engineer sn: smith objectclass: person objectclass: top
次に、VirtualAttributeプラグインが元のエントリをどのように変換するのかを示します。
AddAttributes構成パラメータを処理した後のエントリは次のとおりです。
dn: cn=john, dc=com cn: john cn: jsmith uid: 1234 uid: john uid: jsmith displayName: john displayName: jsmith certificate: verisign certificate: selfsigned designation: SMTS title: Senior Software Engineer sn: smith objectclass: person objectclass: top member: cn=john, sn=smith, dc=oracle, dc=com member: cn=jsmith, sn=smith, dc=oracle, dc=com
ReplaceAttributes構成パラメータを処理した後のエントリは次のとおりです。
dn: cn=john, dc=com cn: john cn: jsmith uid: 1234 uid: john uid: jsmith displayName: john displayName: jsmith certificate: verisign certificate: selfsigned designation: SMTS title: SMTS sn: smith objectclass: person objectclass: top member: cn=john, sn=smith, dc=oracle, dc=com member: cn=jsmith, sn=smith, dc=oracle, dc=com
RemoveAttributes構成パラメータを処理した後のエントリは次のとおりです。
dn: cn=john, dc=com cn: john cn: jsmith displayName: john displayName: jsmith certificate: verisign certificate: selfsigned title: SMTS sn: smith objectclass: person objectclass: top member: cn=john, sn=smith, dc=oracle, dc=com member: cn=jsmith, sn=smith, dc=oracle, dc=com
Dump Transactionsプラグインは、各LDAP操作の全トランザクションのレコードを生成し、そのレコードをOracle Virtual Directoryのコンソール・ログに記録します。Dump Transactionsプラグインは、任意のログ・レベルで実行するように構成できます。Dump Transactionsプラグインは、ロジックがOracle Virtual Directoryシステムを通過する際に、マッピングおよび統合作業を診断するのに特に便利です。Dump Transactionsプラグインを使用すると、サーバー・ログ・レベル全体をより詳細なレベルに設定せずに、特定のアダプタの問題を分析できます。Dump Transactionsプラグインは、Oracle Virtual Directoryのプロトコル・アナライザのようなものです。
DynamicTreeプラグインにより、実在、仮想、または別の実在エントリを指すポインタである親エントリを持つソース・ディレクトリ・エントリの属性値を使用してOracle Virtual Directory内にDNを作成できます。
注意: DynamicTreeプラグインは、アダプタへのデプロイメントに対してのみサポートされています。DynamicTreeプラグインをグローバル・プラグインとしてデプロイしないでください。 |
このプラグインは、ソース・ディレクトリ・エントリに含まれる構造型データに基づいてLDAP階層形式で組織図およびレポートを生成する際に役立ちます。Dynamic Treeプラグインは、ユーザーによるディレクトリ・ツリーの参照が可能なため、DynamicEntry Treeプラグインよりも高い柔軟性を備えています。
次の図と例について考えてみます。
注意: 次の図では、ソース・ディレクトリの属性値が太字で示されています。 |
図4-2は、ソース・ディレクトリに配置されているディレクトリ構造の例を示しています。
図4-3は、parentEntryTypeパラメータを1に、attributeNameパラメータをparentouに設定したDynamicTreeプラグインが、図4-2に示すソース・ディレクトリの平面的な階層を、Oracle Virtual Directoryのレイヤー階層に変換する方法の例を示しています。
図4-4は、ソース・ディレクトリに配置されているディレクトリ構造のもう1つの例を示しています。
図4-5は、parentEntryTypeパラメータを0に、attributeNameパラメータをlに設定したDynamicTreeプラグインが、図4-4に示すソース・ディレクトリのl属性値に基づいてOracle Virtual Directoryにレイヤー階層に作成する方法の例を示しています。
DynamicEntryTreeは、汎用目的のプラグインであり、エントリのリーフ・ノードにある属性を使用して仮想ディレクトリ・ツリー階層を生成するために使用できます。たとえば、アダプタがo=Airius.comというルートを持っており、ユーザーがuid=scarter,ou=people,o=airius.comとして存在する場合、DynamicEntryTreeプラグインは、uid=scarter,ou=accounting,ou=people,o=airius.comなどユーザーのエントリに存在するデータを使用して新しい階層を挿入できます。
DynamicEntryTreeプラグインには、次の構成パラメータがあります。
DynamicEntryTreeプラグインは、patterns構成パラメータを使用して一致パターンを指定することにより構成されます。patternsパラメータ値の構文は次のとおりです。
attr[=entryattr[(SUPPRESS|value)]],...
DNコンポーネントごとに、属性名は、等号(=)の右側にある属性で置換される値を持つことができます。置換が必要ない場合、単に属性がリストされ、それらは基本的に元のDNと一致するコンポーネントを参照します。値が置換される場合、entryattrに値がない場合の処理をさらに条件付けることもできます。SUPPRESSを指定してエントリを完全に抑制するか、entryattr名の後の大カッコ内にデフォルト値を指定できます。
|
を使用して区切ることで、複数のパターンを定義できます。次に例を示します。
uid,ou=department(contract),ou|cn,ou=code(SUPPRESS)
このルールには2つのパターンがあります。1つのパターンは、uid,ouに一致するdnコンポーネントを持つアダプタ・ルート(o=airius.com)の下のオブジェクトに一致します。したがって、uid=scarter,ou=people,o=airius.comがマッピングに選択されます。戻されるときは、department属性が値についてチェックされます。何も存在しない場合、静的テキストcontract
に置換されます。検索の際は、ベースがuid=scarter,ou=accounting,ou=people,o=airius.comに設定されている場合、新しいベースがuid=scarter,ou=people,o=airius.comになるように検索が変更され、フィルタはou=accountingの追加のandで結合された項目で変更されます。
2つ目のパターンは、cn rdnコンポーネントを持つo=airius.comの子オブジェクトに一致することが意図されています。一致した場合、そのエントリに属性codeがあると、cn=mygroup,ou=code12,o=airius.comを作成してその値が置換されます。属性code
がない場合、エントリの結果はSUPPRESSキーワードによって抑制されます。
FlatTreeプラグインは、DynamicEntryTreeの場合と同様に、仮想ディレクトリ・ツリーの動的マッピングを実行します。FlatTreeプラグインではディレクトリ・ソースが圧縮されるため、すべてのエントリがアダプタ・ルートの下に直接表示されます。
たとえば、ルートがdc=oracle,dc=comのアダプタがあり、FlatTreeプラグインはそれに対してデプロイされていると仮定します。FlatTreeプラグインは、uid=jsmith,cn=users,dc=peopleContainer,dc=oracle,dc=comなどのエントリDNを、バックエンドからuid=jsmith,dc=oracle,dc=comに変換します(アダプタ・ベースで直接実行される)。したがって、バックエンド・データの階層構造はフラット化され、アダプタ・ベースの下に直接表示されます。
FlatTreeプラグインは、2種類のデプロイ・モードで動作します。
既存のネームスペースをフラット化するための既存のアダプタの一部として動作
カスタム・アダプタ・デプロイの一部として動作
カスタム・アダプタ・デプロイメントの一部として、FlatTreeプラグインのアダプタ・パラメータを使用して、指定されたアダプタからデータを取得できます。これにより、データは、カスタム・アダプタのネームスペースの一部として表示されます。この方法でデプロイすると、アダプタ・ルート・オブジェクトは定義されません。このタイプのデプロイメントは、重複した親ノードを作成せずに、親アダプタの上に複数のアダプタをオーバーレイする場合に便利です。
次に、FlatTreeプラグイン構成パラメータのリストと説明を示します。
criteriaには、FlatTreeプラグインを介して検索できるエントリを制限するLDAPフィルタを定義します。たとえば、criteriaをobjectclass=userと設定した場合、FlatTreeプラグインを介して戻されるのはuserオブジェクトのみです。
adapterパラメータが定義されていない場合、FlatTreeプラグインでは、データは親アダプタを介して取得されるとみなされます。定義されている場合、adapterパラメータは、Oracle Virtual Directory構成内の別のアダプタ名である必要があります。FlatTreeプラグインによりこのアダプタからデータが取得され、そのエントリが親アダプタのルートにマップされます。adapterパラメータが定義されている場合、子エントリのみが戻され、ルート・オブジェクトは戻されません。
DynamicGroupsプラグインを使用すると、Oracle Virtual Directoryで(動的グループと呼ばれる)groupofuniquenames
およびgroupofurls
の両方のLDAPオブジェクト・クラスを処理し、それを仮想の静的なグループまたはgroupofuniquenames
と同等のものに変換できます。このプラグインは、戻されるLDAPオブジェクトを監視することで機能し、memberurl属性が存在し、かつオブジェクト・クラスがgroupofuniquenames
およびgroupofurls
の両方であるオブジェクトを検出します。
検出された場合には、プラグインによりmemberurl値が自動的に処理され、uniquemember属性に結果が追加されます。動的にオブジェクトが処理されることにより、管理者は、通常ならgroupofurls
オブジェクト・クラスをサポートしないアプリケーションとの互換性を維持しながら、静的メンバーおよび動的メンバーの両方が含まれるグループを定義できます。
例4-1は、Dynamic Groupsプラグインが有効化されていない場合の問合せの例を示しています。2つのグループが戻され、1つ目のグループには、2つの静的メンバーと、メンバーとなる特定のディレクトリ・サブツリーを定義するmemberurlが含まれています。
例4-1 Dynamic Groupsプラグインが有効化されていない場合の問合せの例
C:\>ldapsearch -D bindDN -q -b ou=groups,ou=airius,o=yourcompany.com -s
sub "(memberurl=*)"
cn=test,ou=groups,ou=airius,o=yourcompany.com
cn=test
memberurl=ldap:///ou=accounting,o=yourcompany.com??sub?(&(objectclass=person)(obj
ectclass=organizationalperson))
objectclass=groupofuniquenames
objectclass=groupofurls
objectclass=top
uniquemember=cn=Paul Jacobs,ou=People,ou=Airius,o=yourcompany.com
uniquemember=cn=Wendy Verbaas,ou=People,ou=Airius,o=YourCompany.com
cn=TestCheck,ou=groups,ou=airius,o=yourcompany.com
memberurl=ldap:///ou=alt bind,o=yourcompany.com??sub?(&(userprincipalname=*))
objectclass=groupofuniquenames
objectclass=groupofurls
cn=TestCheck
例4-2に、例4-1と同じ問合せで、Dynamic Groupsプラグインが有効化されている場合の結果を示します。
例4-2 Dynamic Groupsプラグインが有効化されている場合の問合せの例
C:\>ldapsearch -D bindDN -q -b ou=groups,ou=airius,o=yourcompany.com -s
sub "(cn=test)"
cn=test,ou=groups,ou=airius,o=yourcompany.com
memberurl=ldap:///ou=accounting,o=yourcompany.com??sub?(&(objectclass=person)(obj
ectclass=organizationalperson))
objectclass=groupofuniquenames
objectclass=groupofurls
objectclass=top
cn=test
uniquemember=cn=Paul Jacobs,ou=People,ou=Airius,o=yourcompany.com
uniquemember=cn=Wendy Verbaas,ou=People,ou=Airius,o=YourCompany.com
uniquemember=cn=Vipi Velasquez,ou=accounting,o=yourcompany.com
uniquemember=cn=Preston Pena-Fernandez,ou=accounting,o=yourcompany.com
uniquemember=cn=Andreas O'Hara,ou=accounting,o=yourcompany.com
uniquemember=cn=Chitra Guenette,ou=accounting,o=yourcompany.com
...
uniquemember=cn=Jim Ward,ou=accounting,o=yourcompany.com
クライアント・リクエストに指定されている検索フィルタがリモート・バックエンド・サーバーからエントリを戻さない場合にのみ、Dynamic GroupプラグインがmemberURL値を拡張します(つまり、memberURLにベース、有効範囲、フィルタを指定してLDAP検索問合せを実行し、戻されたDNをメンバー属性に追加します)。
この点を説明するために、例4-3に示すLDAPエントリが、Oracle Virtual Directoryを使用するように構成されたリモートLDAPサーバーに存在していると想定します。
例4-3 Oracle Virtual Directoryを使用しているリモートLDAPサーバー上のLDAPエントリ
dn:cn=admingroup,dc=groups,dc=acme,dc=com uniqueMember:cn=mark,cn=users,dc=acme,dc=com memberURL:ldap:///cn=users,dc=acme,dc=com??sub?(|(cn=john)(cn=smith)) objectClass:groupOfUniqueNames objectClass:groupOfUrls
次のLDAP検索では、memberURL値を拡張することなく、エントリがそのままの状態で戻されます。
Base DN: dc=groups,dc=acme,dc=com Scope: sub Filter: uniquemember=cn=mark,cn=users,dc=acme,dc=com
ただし、次のLDAP検索を実行すると、Dynamic Groupプラグインによって例4-4に示すuniqueMemberにcn=john値を持つLDAPエントリが戻されます。
Base DN: dc=groups,dc=acme,dc=com Scope: sub Filter: uniquemember=cn=john,cn=users,dc=acme,dc=com
例4-4 uniqueMemberの値とともに戻されるLDAPエントリ
dn:cn=admingroup,dc=groups,dc=acme,dc=com uniqueMember:cn=mark,cn=users,dc=acme,dc=com uniqueMember:cn=john,cn=users,dc=acme,dc=com memberURL:ldap:///cn=users,dc=acme,dc=com??sub?(|(cn=john)(cn=smith)) objectClass:groupOfUniqueNames objectClass:groupOfUrls
バックエンド・リモート・サーバーで構成された動的グループを解決するには、次の手順を実行する必要があります。
DynamicGroupsプラグインを構成します。
memberurlをリモート・ベースからプロキシ・ルートDNに変更するアダプタ構成の「DN属性」リストにmemberurl属性を追加します。この構成がない場合、このアダプタに対して動的グループを変換することはできません。
たとえば、Oracle Virtual Directoryアダプタ構成のベース・ルートDNがリモート・ベースと異なる場合に、DynamicGroupsプラグインをアクティブ化して動的グループを解決するには、次の手順を実行します。
リモート・サーバーで動的グループを構成します。
cn=dyngroup,dc=ralf,dc=oracle,dc=com memberurl: ldap:///dc=ralf,dc=oracle,dc=com??sub?cn=a* uniquemember: cn=b1,ralf,dc=oracle,dc=com
動的メンバー・エントリを移入します。
cn=a1,dc=ralf,dc=oracle,dc=com
LDAPアダプタをルートDNがリモート・ベースと等しくならないように構成します。
Root DN : dc=test,dc=ovd,dc=comRemote base : dc=ralf,dc=oracle,dc=com
アダプタ構成のdnAttributeリストにmemberurlを追加します。
DN Attributes : uniquemember,manager,secretary,owner,memberurl
DynamicGroupsプラグインを構成します。
プロキシ・ベースで検索操作を実行します。
> ldapsearch -p 5566 -D cn=admin -w welcome1 -b "dc=test,dc=ovd,dc=com" -s sub "cn=dyn*"
テスト結果は、次の例のようになります。
cn=dyngroup,dc=test,dc=ovd,dc=com memberURL=ldap:///dc=dc=test,dc=ovd,dc=com??sub?cn=a* objectClass=groupofuniquenames objectClass=groupofurls objectClass=top cn=dyngroup uniquemember=cn=b1,dc=test,dc=ovd,dc=com uniquemember=cn=a1,dc=test,dc=ovd,dc=com
ベースDNのすべてが、dc=ralf,dc=oracle,dc=com to dc=test,dc=ovd,dc=comから変換されていることに注意してください。
次の例は、Oracle Virtual Directoryアダプタ構成のベース・ルートDNがリモート・ベースと同じ場合に、DynamicGroupsプラグインをアクティブ化して動的グループを解決する方法を示しています。
リモート・サーバーで動的グループを構成します。
cn=dyngroup,dc=ralf,dc=oracle,dc=com memberurl: ldap:///dc=ralf,dc=oracle,dc=com??sub?cn=a* uniquemember: cn=b1,ralf,dc=oracle,dc=com
動的メンバー・エントリを移入します。
cn=a1,dc=ralf,dc=oracle,dc=com
LDAPアダプタをルートDNがリモート・ベースと等しくなるように構成します。
Root DN : dc=ralf,dc=oracle,dc=comRemote base : dc=ralf,dc=oracle,dc=com
Dynamic Groupsプラグインを構成します。
プロキシ・ベースで検索操作を実行します。
> ldapsearch -p 5566 -D cn=admin -w welcome1 -b "dc=ralf,dc=oracle,dc=com" -s sub "cn=dyn*"
この例のテスト結果は、次のようになります。
cn=dyngroup,dc=ralf,dc=oracle,dc=com memberURL=ldap:///dc=ralf,dc=oracle,dc=com??sub?cn=a* objectClass=groupofuniquenames objectClass=groupofurls objectClass=top cn=dyngroup uniquemember=cn=b1,dc=ralf,dc=oracle,dc=com uniquemember=cn=a1,dc=ralf,dc=oracle,dc=com
この最後の例では、動的グループを解決せずに、memberurlのベースDNのみを変換する方法を示しています。
リモート・サーバーで動的グループを構成します。
cn=dyngroup,dc=test,dc=ovd,dc=com memberurl: ldap:///dc=ralf,dc=oracle,dc=com??sub?cn=a* uniquemember: cn=b1,dc=test,dc=ovd,dc=com
動的メンバー・エントリを移入します。
cn=a1,dc=test,dc=ovd,dc=com
LDAPアダプタをルートDNがリモート・ベースと等しくならないように構成します。
Base DN : dc=test,dc=ovd,dc=comRemote base : dc=ralf,dc=oracle,dc=com
プロキシ・ベースで検索操作を実行します。
> ldapsearch -p 5566 -D cn=admin -w welcome1 -b "dc=test,dc=ovd,dc=com" -s sub "cn=dyn*"
テスト結果は、次のようになります。
cn=dyngroup,dc=test,dc=ovd,dc=com memberURL=ldap:///dc=test,dc=oracle,dc=com??sub?cn=a* objectClass=groupofuniquenames objectClass=groupofurls objectClass=top cn=dyngroup uniquemember=cn=b1,dc=test,dc=ovd,dc=com
Oracle Virtual DirectoryがベースDNを変換し、静的メンバーのみを取得していることに注意してください。
ポリシー・サーバーなどの製品では、特定のユーザーがグループのメンバーであるかどうかの確認が必要な場合がよくあります。これは、グループが大規模であったり動的グループである場合には大変な作業になります。ただし、Dynamic Groupsプラグインでは、cnおよびuniquememberフィルタ項目の両方の有無を確認することで、メンバーシップ・テストの問合せを検出できます。存在する場合、Dynamic Groupsプラグインは、クライアントでメンバーシップ・アサーションのテストが必要であることを確認し、別の方法で問合せを処理します。例4-5に示すように、プラグインにより結果が変更され、メンバーとしてテストされる単一のユーザーのみが戻されます。
例4-5 Dynamic Groupsプラグインを使用したメンバーシップ・テストの例
C:\>ldapsearch -D bindDN -q -b ou=groups,ou=airius,o=yourcompany.com -s
sub "(&(cn=TestCheck)(uniquemember=cn=Jim Ward,ou=accounting,o=yourcompany.com))"
cn=TestCheck,ou=groups,ou=airius,o=yourcompany.com
memberurl=ldap:///ou=accounting,o=yourcompany.com??sub?(&(userprincipalname=*))
objectclass=groupofuniquenames
objectclass=groupofurls
cn=TestCheck
uniquemember=cn=Jim Ward,ou=Accounting,o=YourCompany.com
次に、構成パラメータのリストと説明を示します。Dynamic Groupsプラグインを有効化するには、それをプラグイン・チェーンに追加します。
メンバー値を格納する属性の名前。値が指定されていない場合、デフォルトでuniqueMember
が使用されます。
このパラメータをtrue
に設定すると、このプラグインが、可視性が内部に設定されているアダプタにアクセスし、それらの内部アダプタで構成されているメンバーのmemberURLを解決できるようになります。デフォルトはfalseです。
LDAP URLに指定されているベースを上書きする必要がある仮想検索ベース用のオプションの値。
ユーザーが、静的および動的の両方のグループのメンバーである場合に使用されるパラメータ。デフォルトはfalseです。
false
に設定した場合、特定の検索されたユーザーが属する静的グループのみが取得され、動的グループは取得されません。
true
に設定した場合、検索されたユーザーが属する静的および動的の両方のグループが取得されます。
メンバーシップ・テスト問合せを実行する際に、memberURLに指定されているベースおよび有効範囲を尊重するかどうかを示すブール値。デフォルトはfalseです。
動的グループを展開するための検索の発生場所の制御に使用されるパラメータ。
true
に設定した場合、検索はグローバル・プラグイン・チェーン(グローバル・サービス・インタフェース)層から発生します。
false
に設定した場合、検索はアダプタ・プラグイン・チェーン(アダプタ・サービス・インタフェース)層から発生します。
vsi
に設定した場合、検索はOracle Virtual Directoryの動的グループ・プラグイン(仮想サービス・インタフェース)の次に構成されたプラグインから発生します。
動的グループが展開される必要があるかどうかを示すブール。この値が明示的に構成されていない場合は、検索リクエストのリクエストされた属性に基づいて黙示的に計算されます。黙示的な計算については、検索問合せリクエストでリクエストされた属性がすべての属性用、またはmember/uniquemember属性用の場合、グループは展開されます。そうでない場合、グループは展開されません。しかし、この明示的に構成された値は、黙示的な動作に優先します。
Cacheプラグインは、Oracle Virtual Directoryに本来のキャッシュを提供します。これは、LDAP検索結果セットのメモリー内コピーであり、繰り返される問合せのパフォーマンスが向上するように設計されています。たとえば、3回連続でエンタープライズLDAPサーバー(Oracle Virtual Directory)のすべてのグループを問い合せる日次同期プロセスの一部としてサード・パーティのポータル・サーバーがあるとします。Cacheプラグインは、LDAPクライアントが再利用できるように、最初の検索結果のコピーを保持できます。クライアント・アプリケーションにとっては結果がわずかに早くなるだけですが、より重要なことは、エンタープライズ・ソース・システムの負荷が削減されることです。
Oracle Virtual DirectoryはCacheプラグインなしで機能するように設計されており、多くの場合、Cacheプラグインは必要ありません。これは、多くのアプリケーションで結果がそれ自体にキャッシュされるか、ほとんどのエンタープライズ・ソース・システムですでにデータがキャッシュされているためです。また、Oracle Virtual Directoryはセキュリティで保護された環境で使用されることが多く、キャッシュを保持すると、従業員が操作を終了してもそのユーザー結果がキャッシュに残されたままになるなど、セキュリティ要素の公開につながります。
注意: Cacheプラグインを使用する場合は、キャッシュ・タイムアウトを小さくして、このような場合にキャッシュの更新の問題を避ける必要があります。 |
Cacheプラグインを使用すると、問合せが何度も繰り返されるアプリケーションのパフォーマンスを大幅に向上できます。また、Oracle Virtual Directory内のどこでも実行できるように構成できます。Cacheプラグインはグローバルに実行することも、単一アダプタのコンテキスト内で実行することも可能であり、ネームスペース・フィルタ処理を使用して特定のネームスペースに制限することもできます。
問合せが同じユーザーによって繰り返され、同一の属性または属性のサブセットがリクエストされる場合、Oracle Virtual Directoryがソースから情報を取得するのではなく、キャッシュから問合せの結果が戻されます。たとえば、問合せ2でクライアントが検索属性を変更する、次のような2つの仮想の問合せがあるとします。
問合せ1
バインド: "cn=Example User,cn=users,dc=mycompany,dc=com"
ベース: "dc=mycompany,dc=com"
問合せ: "uid=jdoe"
属性: "cn,mail"
問合せ2
バインド: "cn=Example User,cn=users,dc=mycompany,dc=com"
ベース: "dc=mycompany,dc=com"
問合せ: "uid=jdoe"
属性: "telephonenumber,manager"
Cacheプラグインを使用すると、Oracle Virtual Directoryは問合せ1および問合せ2を2つの別々の問合せとして扱わないため、バックエンド・ソースは2回検索されません。Oracle Virtual Directoryは、問合せ1で一致するエントリのすべての属性をリクエストしますが、クライアントがリクエストした属性のみを戻し、キャッシュに検索結果のメモリー内コピーを保持します。
注意: Oracle Virtual Directoryは、バックエンドのソース・リポジトリであるアクセス制御リスト(ACL)、Oracle Virtual Directory ACLおよびアダプタ・ルーティング・ルールに基づいて、バインドされたユーザーがアクセス権を持っている属性のみを取得します。 |
キャッシュ・ヒットをユーザー間で共有できるようにCacheプラグインを構成することもできます。passcredentials
がバックエンド・ソースに渡されず、Oracle Virtual Directoryのみによってセキュリティが実施されている場合以外は、ユーザー間でキャッシュ・エントリを共有しないでください。
注意: より強力な権限を持つユーザーのキャッシュ結果にアクセスする可能性があり、許可されていない情報を表示することも可能であるため、ユーザー間でキャッシュ・ヒットを共有する際には慎重に計画を立ててください。 |
Cacheプラグインは、キャッシュを定期的に確認し、期限切れの結果や以前の変更トランザクションで無効にされたエントリがないかどうかチェックします。キャッシュの割当てを超えた場合、Cacheプラグインは使用されていない期間が最も長い問合せをパージしてメモリーのサイズを小さくしようと試みます。
次に、Cacheプラグイン構成パラメータのリストと説明を示します。
Cacheプラグインですべての属性をサイレントにリクエストするかどうかを制御します。サポートされている値は0(無効化)または1(有効化)です。デフォルトで、storeallattrsパラメータは無効化(0)されています。
サブジェクト間でキャッシュ結果を共有するかどうかを示します。サポートされている値は0または1です。0の値はサブジェクト間で結果が共有されることを意味し、1の値はサブジェクト間で結果が共有されないことを意味します。デフォルト値は1です。
キャッシュ・マネージャが期限切れの問合せがないかチェックする間隔(秒)。デフォルト値は60です。
一度にキャッシュ可能なエントリの最大数。デフォルト値は10000です。
キャッシュに保存される問合せ/エントリの秒単位の最大有効期間(時間)。デフォルト値は600です。
特定の問合せに対してキャッシュ可能なエントリの最大数。デフォルト設定は1000です。
このパラメータは、最大キャッシュ・サイズを超えた場合に、キャッシュ・マネージャが調整する必要のある量を示します。デフォルト値は10000です。
注意: 必要な場合には、最初に有効期限の切れた問合せ、続いて使用頻度が最低の問合せをパージすることで調整が行われます。 |
含まれているエントリがゼロ個の問合せ結果をキャッシュするかどうかを示します。サポートされている値は0および1です。
ObjectClass Mapperプラグインは、あるobjectClass(userなど)を別のobjectClass(inetOrgPersonなど)として認識させる一般的なマッピング・プラグインです。この機能は、ディレクトリで特定のobjectClassまたは属性はサポートされていないが、アプリケーションでそのobjectClassおよび属性が予期されている際に便利です。
ObjectClass Mapperプラグインでは、選択する構成パラメータに基づいて、次に示すような複数の異なるタイプの操作を実行できます。
属性マッピング
オブジェクト・クラス・マッピング
オブジェクト・クラスへの属性条件の追加
属性の削除
補助クラスのフィルタ処理
アクティブ化および非アクティブ化の処理
属性のマッピング関係が生じた場合、接頭辞client-
はクライアント側を、source-
はデータ・ソース側を表します。たとえば、Active Directoryサーバーのuser
をマッピングしてそれをInetOrgPerson
として表すようにした場合、Active Directoryはソース側でInetOrgPerson
はクライアント側になります。
次に、ObjectClass Mapperプラグイン構成パラメータのリストと説明を示します。
ユーザーのアクティブ化を実行する際に使用するディレクトリのタイプ。サポートされている値はSunOne、eDirectory、ADAMおよびActiveDirectoryです。次に例を示します。
パラメータ名: directoryType
パラメータ値: ActiveDirectory
activationAttributeパラメータは、アプリケーションに、基礎となるディレクトリのユーザー・アクティベーション・システムに関する情報がない場合に使用します。activationAttributeパラメータにより、ユーザー・アクティベーション・フラグが含まれている着信属性が、Oracle Virtual Directoryに通知されます。その後、このフラグは、ディレクトリ固有の属性およびフラグにマップされます。次に例を示します。
パラメータ名: activationAttribute
パラメータ値: myuseraccountcontrol
ユーザーを非アクティブとしてマークする必要があることを示すactivationAttribute
に指定された属性値のカンマ区切りリスト。
ユーザーをアクティブとしてマークする必要があることを示すactivationAttribute
に指定された属性値のカンマ区切りリスト。
client-ObjectClass=source-ObejctClass
という書式でマップされるobjectClass。次に例を示します。
パラメータ名: mapObjectClass
パラメータ値: inetOrgPerson=user
mapObjectClassパラメータは、複数のマッピングに複数回使用できます。
追加プロセス中にユーザーに属性を追加します。オプションのオブジェクト・クラス値は、特定のオブジェクト・クラスのみに属性を追加するために、構成名に追加できます。たとえば、ユーザー・オブジェクト・クラスのみにuserAccountControl属性を追加するには、次のものを使用します。
パラメータ名: addAttribute-user
パラメータ値: userAccountControl=546
注意: 属性名をパーセンテージ文字( パラメータ名: addAttribute-group パラメータ値: samaccountname=%cn% |
追加操作または変更操作中に削除される(および返されたすべてのエントリから削除される)属性のカンマ区切りのリスト。次に例を示します。
パラメータ名: filterAttribute
パラメータ値: objectsid,memberof,samaccountname
filterAttribute定義にobjectclass(filterAttribute-ユーザー:memberof)を追加する場合、追加および変更操作中に、属性のカンマ区切りリストが、関連するobjectclassを持つエントリから削除されます。
filterAttribute定義にobjectclass(filterAttribute-ユーザー:memberof)を追加しない場合は、属性のカンマ区切りのリストは、追加および変更操作中に削除されます(および返されたすべてのエントリから削除される)。
client-Attribute=source-attribute
という書式でマップされる属性。次に例を示します。
パラメータ名: mapAttribute
パラメータ値: uniqueMember=member
mapAttributeパラメータは、複数のマッピングに複数回使用できます。
追加操作中に削除する必要のあるオブジェクト・クラスのカンマ区切りのリスト。たとえば、Microsoft Active Directory for Windows 2000では、エントリの追加中に補助オブジェクト・クラスをリストすることはできませんが、Microsoft Active DirectoryおよびADAM for Windows Server 2003では補助クラスをリストできます。次に例を示します。
パラメータ名: filterAuxiliaryClass
パラメータ値: person,myorgPerson
filterObjectClassOnModifyパラメータを使用して、変更操作中にobjectClassエントリの変更を削除します。サポートされる値はtrue (変更を削除)またはfalse (変更を削除しない)です。trueがデフォルトです。次に例を示します。
パラメータ名: filterObjectClassOnModify
パラメータ値: true、false
Sub-Treeプラグインは、元々、IBMのTivoli Access Manager製品の旧バージョンをサポートするために開発されました。この製品には、ユーザー・エントリの下にユーザー・エントリに関するポリシー情報を格納するという要件があったため、通常のリーフ・モデルからのユーザー・エントリはブランチに変更されていました。一部のディレクトリではそのようなモデルをサポートしていないか、企業ディレクトリにそのような方法で移入する必要がありませんでした。
Sub-Treeプラグインを使用すると、アプリケーション(この場合はTivoli Access Manager)に対象のディレクトリ・ツリー・ビューを提供しながら、これらのサブツリー・エントリを異なるアダプタに格納できます。通常のリーフ・エントリの下にエントリを追加するという要件は、一般的ではありません。より一般的なケースは、データ・ストアを既存のデータ・ストアの下にブランチとして表示させることです。これは、ルートのネームスペース値を正しく設定することで、どのアダプタでも実行できます。
次に、Sub-Treeプラグイン構成パラメータのリストと説明を示します。
ユーザー・サブツリー・オブジェクトを格納するためのアダプタ。
ユーザー・サブツリー・オブジェクトを格納するストア・アダプタの場所。
Sub-Treeプラグインが捕捉してストア・アダプタにリダイレクトする必要のあるサブツリー識別名(DN)コンポーネントを指定します。デフォルト値はsecAuthority=Defaultです。
ユーザー・オブジェクトが検出される識別名(DN)、およびユーザー・オブジェクトRDNを指定する番号付きのパラメータ。たとえば、0=ou=People,o=Airius.com\:uid
のようになります。
Performance Monitorプラグインを使用すると、特定のアダプタのパフォーマンスを監視できます。Performance Monitorプラグインを使用するには、それをアダプタに追加して、そのアダプタに対して操作を実行します。アダプタのパフォーマンスを表示するには、アダプタのルートのネームスペースで、vdeSearchtime=*
というフィルタを使用して特定タイプのベース・レベルのLDAP検索を実行する必要があります。
検索により、例4-6のような結果が戻されます。この例では、時間はすべてミリ秒単位で計測されています。
例4-6 Performance Monitorプラグインを使用して戻されるデータの例
dn: dc=demo,dc=com vdeNumSearches: 4 vdeNumEntries: 5 vdeMinSearchTime: 0 vdeMaxSearchTime: 16 vdeTotalSearchTime: 16 vdeAverageSearchTime: 4 vdeMinEntryTime: 0 vdeMaxEntryTime: 0 vdeTotalEntryTime: 0 vdeAverageEntryTime: 0 vdeMinSearchCompleteTime: 0 vdeMaxSearchCompleteTime: 203 vdeTotalSearchCompletionTime: 219 vdeAverageSearchCompletionTime: 54
注意: Performance Monitorデータは、Oracle Virtual Directoryサーバーが再起動するとリセットされます。 |
一部のOracle Virtual Directory環境のユーザーは、Oracle Virtual Directoryアダプタを使用して接続する複数のサービスに対して重複したアカウントを持っています。通常、結合ビュー・アダプタを作成して複数のアダプタを統一し、単一の仮想ユーザー・エントリを作成すると、この問題は解決します。ただし、結合ビュー・アダプタの作成が選択肢にならない場合があります。たとえば、社員用のディレクトリと顧客用のディレクトリがあるが、仕事上の正当な目的で両方のディレクトリにアカウントを持っている社員がいて、結合ビュー・アダプタを作成できない場合があります。
UniqueEntryプラグインは、それぞれの管理ソースで様々なアダプタをランク付けすることでこの問題を解決します。たとえば、重複しているユーザーIDのどれが社員のアカウントであるかの判断を試行している場合、社員ディレクトリの方が顧客ディレクトリよりも問題に関連があるため、顧客ディレクトリ・アダプタよりも社員ディレクトリ・アダプタの優先度を高くします。
アダプタの優先度をランク付けする場合、ランク付けの数値が低いほど優先度が高くなります。たとえば、2つのアダプタを検索していて、1つのアダプタの優先度のランクが5で、もう1つのアダプタのランクが10の場合、ランクが10のアダプタよりもランクが5のアダプタが先に検索されます。
注意: UniqueEntryプラグインはアダプタ・レベルでは適用せず、必ずグローバル・プラグインとしてのみ適用してください。 |
アダプタ・プラグイン・バージョン・プラグインはデプロイしないでください。これは、情報提供を目的とするもので、サーバー機能はありません。これは、Oracle Directory Services Managerホーム・ページに表示されるアダプタ・バージョン情報を提供します。
多くのデプロイメントにおいて、顧客は、ユーザー資格証明をMicrosoft Active Directoryなどのエンタープライズ・パスワード資格証明ディレクトリに格納しますが、Oracle Directory Server Enterprise Edition、Oracle Internet Directoryなどの他のデータソースからのコンテンツの集計も行っています。これらのデプロイメントでは、顧客は、認証されたユーザーにマップされる一貫性のあるセキュリティおよび監査証跡を適用する機能(ID反映と呼ぶ)を必要としています。Proxy Authorization Supportプラグインは、エンタープライズ・ディレクトリのプロキシ認証機能を活用します。それにより、ユーザーが実際にActive Directoryで認証された場合でも、そのユーザー・アイデンティティを1つ以上の他のソースに伝播でき、それらの追加のソースにおけるセキュリティおよび監査が、Oracle Virtual Directoryに格納されたアプリケーション・アカウントではなく、Oracle Virtual Directoryで認証された実際のユーザーにマップされます。
Proxy Authorization Supportプラグインは、クライアントDNを作成し、このクライアントDNとともにプロキシ認証制御をそのリクエストに追加し、そのリクエストをバックエンドLDAPサーバーに渡します。LDAPサーバーは、Oracle Virtual DirectoryのプロキシDNを使用してリクエストを認証し、プロキシ認証制御で指定されているクライアント・ユーザー・アイデンティティを使用して操作を処理します。クライアント・アプリケーションに対する変更は必要ありません。
Proxy Authorization Supportプラグインを構成する場合は、ディレクトリが、渡す予定のプロキシ制御をサポートするように構成する必要があります。
UserManagementプラグインは、Oracle Identity Managerの属性からLDAPディレクトリ・サーバーへのデータ・マッピングを提供します。
UserManagementプラグインには、次の構成パラメータがあります。
追加または変更リクエスト時に削除する必要のあるオブジェクト・クラスのカンマ区切りのリスト。
クライアントに戻される前にエントリから実際に削除される属性のカンマ区切りリスト。
特定のオブジェクト・クラスに対する特定の属性マッピングの除外を定義します。たとえば、値inetorgperson,uid=samaccountname
を持つパラメータを指定すると、オブジェクト・クラスinetorgperson
のエントリ上のuidからsamaccountname
へのマッピングが除外されます。このオプションの複数のインスタンスを使用すると、マッピングに対して複数の除外が可能になります。
属性言語サブタイプで使用される言語コードのカンマ区切りリスト。このパラメータは、directoryTypeパラメータがActiveDirectoryに設定されている場合にのみ機能します。
TrueまたはFalse: Oracle Access ManagerがOracle Identity Managerとともにデプロイされているかどうかを示します。デフォルトでは、Oracle Access Managerはデプロイされておらず、したがってこのパラメータのデフォルト設定はfalseです。
注意: UserManagementプラグインとchangelogプラグインのoamEnabledパラメータの値は同一であることが必要です。 |
ソースLDAPディレクトリ・サーバーのタイプを指定します。サポートされている値はOID、ActiveDirectoryおよびSunOneです。デフォルト値はOIDです。
注意: UserManagementプラグインとchangelogプラグインのdirectoryTypeパラメータの値は同一であることが必要です。 |
ssladapterパラメータは、directoryTypeパラメータがActiveDirectoryに設定されている場合にのみ機能し、リクエストにuserPassword
またはunicodePwd
が含まれている場合にUserManagementプラグインによってリクエストがルーティングされる先のアダプタの名前を指定します。unicodePwd
がリクエストに含まれている場合、そのリクエストには、適切な値を持つuseraccountControl属性も含まれている必要があります。
ssladapterパラメータによって指定されるアダプタは、次のようになっている必要があります。
UserManagementプラグインが構成されているアダプタと同じローカル・ベースを持つ
ルーティングの可視性がInternalに設定されている
ssladapterに値が設定されていない場合は、デフォルトで現在のアダプタが使用されます。
OVD-attribute=OIM-attributeの形式の属性変換を定義します。たとえば、orclGUID=objectGuidなどです。mapAttribute構成パラメータを複数回設定して、複数の属性の変換を定義できます。
TrueまたはFalse。directoryType構成パラメータをActiveDirectoryに設定すると、mapPasswordパラメータが、ユーザー・パスワードをunicodePwd属性に変換するかどうかを制御します。デフォルト値はfalseです。
OVD-RDNattribute=OIM-RDNattributeの形式のRDN属性変換を定義します。たとえば、uid=cnなどです。
(このプラグインがデプロイされているアダプタを介して公開されるユーザー・エントリに適用されたパスワード・ポリシーの定義に従い)ソースLDAPディレクトリ・サーバーによってアカウントがロックされるために必要な失敗ログインの最大回数を指定します。
OVD-objectclass=OIM-objectclassの形式のオブジェクト・クラスの値変換を定義します。たとえば、inetorgperson=userなどです。mapObjectclass構成パラメータを複数回設定して、複数のオブジェクト・クラスの変換を定義できます。
注意: UserManagementプラグインとchangelogプラグインのmapObjectclassパラメータの値は同一であることが必要です。 |
このパラメータは、attribute=value pairsの形式でget操作結果を戻す前に追加する属性を指定します。属性名の前にobjectclass,
を追加すると、属性と値を特定のオブジェクト・クラスに追加できます。また、値を%
で囲んで他の属性を参照することもできます。たとえば、値user,samaccountname=%cn%
を指定すると、エントリがobjectclass=userである場合にcnの値がsamaccountnameに代入されます。値samaccountname=jdoe
を指定すると、値jdoeを持つ属性samaccountnameがすべてのエントリに追加されます。
注意: リリース11.1.1.4.0より前のOracle Virtual Directoryには、次の3つのchangelogプラグインがありました。
これらの3つのプラグインはリリース11.1.1.4.0では非推奨となり、新しい単一のChangelogプラグインが使用可能になっています。このプラグインは、Oracle Internet Directory、Oracle Directory Server Enterprise Edition、およびMicrosoft Active Directoryで使用できます。 |
この単一のChangelogプラグインをデプロイする際は、次のことが必要です。
アダプタの「リモート・ベース」を空の値に、つまり空白にします。
アダプタの「マップされたネームスペース」をcn=changelog
に設定します。
バックエンドがOracle Directory Server Enterprise Editionである場合、Oracle Directory Server Enterprise Edition上のロギングの変更を必ず有効化してください。
11.1.1.4.0より前にリリースされたバージョンのOracle Virtual Directoryを使用している場合、次のchangelogプラグインを使用して、changelog情報をソース・ディレクトリからOracle Identity Managerに適した形式に標準化してください。
注意: これらのプラグインはOracle Virtual Directoryリリース11.1.1.4.0では機能しません。 |
Oracle Internet Directoryの場合
Oracle Internet Directoryではoidchangelogプラグインを使用します。
oidchangelogプラグインをデプロイする場合は、アダプタの「リモート・ベース」を空の値に、つまり空白にします。
Oracle Directory Server Enterprise Editionの場合
Oracle Directory Server Enterprise Editionでは、sunonechangelogプラグインを使用します。
sunonechangelogプラグインをデプロイする際は、次のことが必要です。
アダプタの「リモート・ベース」を空の値に、つまり空白にします。
Oracle Directory Server Enterprise Editionで変更ログが有効化されていることを確認します。
アダプタの「マップされたネームスペース」をcn=changelog
に設定します。
Microsoft Active Directoryの場合
Microsoft Active Directoryではadchangelogプラグインを使用します。
adchangelogプラグインをデプロイする際は、次のことが必要です。
アダプタの「リモート・ベース」を空の値に、つまり空白にします。
アダプタの「マップされたネームスペース」をcn=changelog
に設定します。
各changelogプラグインには、次の構成パラメータがあります。
クライアントに戻される前にエントリから実際に削除される属性のカンマ区切りリスト。
属性言語サブタイプで使用される言語のカンマ区切りリスト。
TrueまたはFalse。falseに設定されていて、破損したchangelogエントリがプラグインによって検出された場合、プラグインはDirectoryExceptionをスローし、changelogエントリのそれ以降の処理を停止します。trueに設定されている場合、プラグインは例外をスローせずにエラーを記録し、このchangelogをスキップして、次のchangelogの処理を続行します。デフォルト値はfalseです。
TrueまたはFalse: Oracle Access ManagerがOracle Identity Managerとともにデプロイされているかどうかを示します。デフォルトでは、Oracle Access Managerはデプロイされておらず、したがってこのパラメータのデフォルト設定はfalseです。
注意: UserManagementプラグインとchangelogプラグインのoamEnabledパラメータの値は同一であることが必要です。 |
ソースLDAPディレクトリ・サーバーのタイプを指定します。サポートされている値はOID、ActiveDirectoryおよびSunOneです。デフォルト値はOIDです。
注意: UserManagementプラグインとchangelogプラグインのdirectoryTypeパラメータの値は同一であることが必要です。 |
OIM-objectclass=Source-Directory-objectclassの形式のオブジェクト・クラスの値変換を定義します。たとえば、inetorgperson=userなどです。mapObjectclass構成パラメータを複数回設定して、複数のオブジェクト・クラスの変換を定義できます。
Oracle Identity Managerのユース・ケースでは、次のパラメータがすぐに使用できるように構成されています。
Active Directoryの場合: inetorgperson=user, orclidxperson=user, and groupOfUniqueNames=group
Oracle Directory Server Enterprise Editionの場合: container=nsContainer and changelog=changelogentry
Oracle Internet Directoryの場合: container=orclContainer
注意: UserManagementプラグインとchangelogプラグインのmapObjectclassパラメータの値は同一であることが必要です。 |
戻されるchangelogエントリの最大数を指定します。
ゼロ(0)または負の値は、サイズ制限がないことを意味します。
受信する検索リクエストでサイズの制約が指定されている場合、小さいほうの値が使用されます。たとえば、プラグインのsizeLimitを100に指定してあり、検索リクエストのカウント制限が200である場合は、リクエストの実際のサイズ制限は100にリセットされます。
Source-Directory-attribute=OIM-attributeの形式の属性変換を定義します。たとえば、orclGUID=objectGuidなどです。mapAttribute構成パラメータを複数回設定して、複数の属性の変換を定義できます。
変更の取得元となるコンテナを指定します。このパラメータは複数回設定して、変更の取得元となるコンテナを複数指定できます。複数回設定した場合、targetDNフィルタは次の例のようになります。このtargetDNフィルタは受信フィルタにandで結合されます。
"(|(targetDN=*cn=users,dc=mycom1)(targetDN=*,cn=groups,dc=mycom2))"
次に値の例を示します。
*,cn=xxx,dc=yyy
*cn=xxx,dc=yyy
cn=xxx,dc=yyy (virtualDITAdapterNameで指定されているアダプタのローカル・ベースの子であることが必要です。)
これらの例はすべて同じ意味を持ちます。
Oracle Virtual Directoryへのchangelog問合せに対して指定されている戻り属性リストに関係なく、ソースLDAPディレクトリ・サーバーから常に取得される属性のカンマ区切りリスト。
正規化されているchangelogエントリに追加される属性のカンマ区切りリスト。たとえば、orclContainerOC=1, changelogSupported=1などです。ここで、=1はchangelogをサポートしているソース・ディレクトリから取得される変更を示します。
TrueまたはFalse。このパラメータは、ディレクトリ固有のアカウント属性からOracle Virtual Directoryの仮想アカウント属性へのマッピングを有効化または無効化します。
modifiersNameに対するLDAPフィルタを定義する単一の値を持つ構成パラメータ。このパラメータは、受信フィルタにandで結合されます。値の例としては、(modifiersName=cn=myadmin,cn=users,dc=mycom)があります。
注意: この構成は、directoryType=ActiveDirectoryの場合は無効です。 |
対応するユーザー・プロファイル・アダプタ名を指定します。
たとえば、単一ディレクトリ・デプロイメントでは、このパラメータの値をA1に設定できます。これはユーザー・アダプタ名です。分割ユーザー・プロファイルのシナリオでは、このパラメータをJ1;A2に設定できます。ここでJ1はJoinViewアダプタ名であり、A2はJ1における対応するユーザー・アダプタです。
このパラメータは複数値を取ることができます。これは、changelogアダプタと同じバックエンド・ディレクトリ・サーバーに対して構成されている複数のベース・エントリ・アダプタがあることを意味します。
このパラメータをA1に設定する場合、このプラグインはアダプタA1のUserManagementPluginのmapAttributeおよびmapObjectclass構成をフェッチするため、ユーザーがそれらの構成を複製する必要はありません。
Consolidated Changelogプラグインは、Oracle Virtual Directoryが複数のディレクトリからのアイデンティティの統合ビューを提供する際に、統合変更番号を提供します。このプラグインは、様々なchangelogからのデータの統合された正規化ビューも提供します。このプラグインは、グローバル・プラグインとしてのみデプロイできます。
Consolidated Changelogプラグインは、統合changelogに対して統合Cookieを提供するという概念に基づいています。このCookieは、Oracle Virtual Directoryでアダプタが構成されているディレクトリの統合ビューの提供に関係するアダプタに基づいて作成されます。
統合変更番号は、次の形式のCookieです。
<changelogAdapterName1>:<changenumber1>;<changelogAdapterName2><changenumber2>;<targetDN:dn>
説明:
<changelogAdapterName1>は、changelogの取得元のソース・アダプタです。
<changenumber1>は、changelogAdapter1のこのエントリのchangeNumberです。
<changelogAdapterName2>は、このOracle Virtual Directoryで構成されている2つ目のchangelogアダプタです。
<changenumber2>は、changelogAdapter2から最後に読み取られたchangeNumberです。
<targetDN:dn>は、バックエンド・ディレクトリなどの場合のこのchangelogエントリのtargetDNです。この値は、オプションであり、診断目的でのみ使用されます。
たとえば、changelogを統合する2つのディレクトリがあり、changelogアダプタはCA1およびCA2であると想定します。また、CA1が指しているディレクトリ・サーバーの変更番号が101から始まり、CA2が指しているディレクトリ・サーバーの変更番号が501から始まると想定します。この場合、CA1の変更101に対するCookieの値は次のようになります。
CA1:101;CA2:501;<targetDN:targetDN_of_CA1_101>
同様に、CA2に対するCookieの値は次のようになります。
CA2:501;CA1:101;<targetDN:targetDN_of_CA2_501>
このCookieの値の長さは2048バイトです。
通常のディレクトリの場合と同様に、Consolidated Changelogプラグインでは、次のようにlastChangeNumber問合せがサポートされています。
ldapsearch -h <ovdHost> -p <ovdPort> -D <ovdAdmin> -w <ovdAdminPwd> -b "cn=changelog" -s base "objectclass=*" lastChangeNumber
例4-7は、戻されるエントリの例を示しています。
例4-7 lastChangeNumber問合せによって戻されるエントリの例
cn=Changelog lastChangeNumber=Changelog_ActiveDirectory:165095;Changelog_OID:408;Changelog_SunOne:298328
注意: このプラグインは、Oracle Identity Manager 11gでのみ使用するように設計されています。 |
このプラグインがデプロイされている場合、サポートされる問合せフィルタは、1つのフィルタ(changenumber>=cookie
)を1つ以上の次に示すフィルタと結合する形式にする必要があります。
(targetdn=*domain)
ここでdomainは有効なドメインdnです。
たとえば、(targetdn=*cn=
.yyy, dc=
zzz)
です。
(modifiersname=
xxx)
ここでxxxはdnです。
!(modifiersname=
yyy)
ここでyyyはdnです。
(changetype=
xxx)
ここでxxxはADD/MODIFY/DELETE/ADDRMODIFYとすることができます。
!(changetype=
yyy)
ここでyyyはADD/MODIFY/DELETE/ADDRMODIFYとすることができます。
GenericMapperプラグインは、次に示すOracle Virtual Directoryプラグインと同等の機能を備えていますが、さらに柔軟性を提供します。
VirtualAttributeプラグイン
ObjectClass Mapperプラグイン
DynamicTreeプラグイン
このプラグインは、『Oracle® Fusion Middleware Oracle Directory Integration Platform管理者ガイド』に記載されているディレクトリ統合プラットフォームのマッピング・ルール・ファイル形式に基づいています。
GenericMapperプラグインは、エントリのオブジェクト・クラスに基づいてマッピングを処理します。ユーザーのすべての属性はバック・エンド・ディレクトリに、そしてバック・エンド・ディレクトリからユーザーのすべての属性にそのままの状態でコピーされます。このプラグインは、ディレクトリ統合プラットフォームのドキュメントに記載されているキーワードに加えて、次のキーワードを使用します。
エンド・ユーザーに戻される結果から除外される属性のリスト。これは、UserBound操作(検索/読取り)に適用されます。
操作がバックエンドで実行される場合に含めない属性のリスト。これは、UserBound操作(検索/読取り)に適用されます。
マッピング・ルールが適用されるフィルタ処理されたエントリ。
次の表は、VirtualAttribute、ObjectClass Mapper、およびDynamicTreeプラグインの機能を実現するためにGenericMapperプラグインを構成する際に使用する構成パラメータを示しています。
VirtualAttributeプラグインの機能を実現する場合:
次の表に示すパラメータを使用します。
パラメータ名 | 説明 |
---|---|
Container DN |
ドメイン・ルール。ドメイン・ルールとしてコンテナDNに指定されているすべてのコンテナを指定します。 |
MatchFilter |
フィルタ・ルール。filterRulesの後にmatchfilter値を指定します。 |
AddAttribute |
次のように属性マッピング・ルールを指定します。 <attribute to be added >:[required]: [attribute type – string/binary]: <objectclass to which the attribute belongs to>: <backend attr name>:[attribute type]:<objectclass> : <rule defining the value to be added> たとえば、my commonnameのcnを戻すには次のルールを使用します。 Mycommonname: : : myObjectClass: cn: :inetorgperson: cn departmentのSALESを戻すには次のルールを指定します。 Department: : :organizationalperson:cn: :person: "SALES" |
ReplaceAttribute |
次のように属性マッピング・ルールを指定します。 <clientview of attribute >:[required]: [attribute type – string/binary]:<objectclass to which the attribute belongs to>: <backend attr name>:[attribute type]:<objectclass> : たとえば、displaynameのcnを戻すには次のルールを使用します。 displayname: : : inetorgperson: cn: :inetorgperson: GenericMapperプラグインによって、ルールが解釈されるときにdisplayname値がcnに置換されます。 |
RemoveAttributes |
AttributeExclusionList (除外するすべての属性のリストを指定します)。 |
ObjectClass Mapperプラグインの機能を実現する場合:
次の表に示すパラメータを使用します。
パラメータ名 | 説明 |
---|---|
Container DN |
ドメイン・ルール。ドメイン・ルールとしてコンテナDNに指定されているすべてのコンテナを指定します。 |
MatchFilter |
フィルタ・ルール。filterRulesの後にmatchfilter値を指定します。 |
AddAttribute |
次のように属性マッピング・ルールを指定します。 <attribute to be added >:[required]: [attribute type – string/binary]: <objectclass to which the attribute belongs to>: <backend attr name>:[attribute type]:<objectclass> : <rule defining the value to be added> たとえば、my commonnameのcnを戻すには次のルールを使用します。 Mycommonname: : : myObjectClass: cn: :inetorgperson: cn departmentのSALESを戻すには次のルールを指定します。 Department: : :organizationalperson:cn: :person: "SALES" |
ReplaceAttribute |
次のように属性マッピング・ルールを指定します。 <clientview of attribute >:[required]: [attribute type – string/binary]: <objectclass to which the attribute belongs to>: <backend attr name>:[attribute type]:<objectclass> : たとえば、displaynameのcnを戻すには次のルールを使用します。 displayname: : : inetorgperson: cn: :inetorgperson: GenericMapperプラグインによって、このルールが解釈されるときにdisplayname値がcnに置換されます。 |
RemoveAttributes |
AttributeExclusionList (除外するすべての属性のリストを指定します)。 |
ObjectClassMapping/Filtering auxiliary classes |
オブジェクト・クラス・マッピングは、そのオブジェクト・クラスがSrc属性定義およびdestination属性定義で指定されているとおりに処理されます。どの属性がマップされているのかに応じてオブジェクト・クラスの値も追加されます。 |
アクティブ化および非アクティブ化の処理 |
この情報は、サンプル・マップ・ファイルで提供されています。 |
DynamicTreeプラグインの機能を実現する場合:
DynamicTreeプラグインと同じ結果を実現するためにGenericMapperプラグインを構成するには、次のように構成する必要があります。
<domain name as seen by client> : <domain name as seen in the backend> : cn=%, l=%,ou=%, <domain name as seen by the client>
すべてのエントリが、それらの属性に基づいて異なるDITの一部であるとみなされます。
注意: GenericMapperプラグインには1つの制限があります。ベースとして構築ルールの属性を指定した検索では、GenericMapperプラグインはサブツリー・エントリのみを戻し、ベース・エントリは戻しません。 |
CoordinatorAdapterプラグインでは、バインドおよび検索ルーティング・ポリシーをカスタマイズできます。たとえば、LDAPバインド・リクエストがリクエストのルーティング先である複数のアダプタの必要を満たす場合、Oracle Virtual Directoryルーティング・エンジンは常にアダプタへのリクエストを最優先でルーティングします。その結果、他のアダプタのデータソースにプロビジョニングされたユーザーの認証は失敗します。
このプラグインは、バインド操作で、このプラグインで構成されているすべての適格なアダプタのリストを失敗させることができます。同様に、それはまた、エントリが1つのアダプタから返されていない場合にのみ、次のアダプタに検索を継続することができる検索ポリシーを提供します。
注意: このプラグインにアダプタを構成するときは、次の点を考慮することが重要です。
|
次に、CoordinatorAdapterプラグイン構成パラメータのリストを示します。
次のバインド・オプションをサポートしているオプションのパラメータを示します。
BindFirstSuccess(デフォルト・モード)は、最初の成功に到達するまで、バインドがすべての適格なアダプタのリスト(このプラグインで構成されている)で失敗するようにします。
BindQuickFailでは、異なるアダプタ(このプラグインに構成されている)の複数のユーザーが同じDNをbindDNとして使用している場合、バインドですぐにエラーがスローされます。
次の検索モードをサポートしているオプションのパラメータを示します。
SearchFirstMatch(デフォルト・モード)はすべてのアダプタに対してではなく、最初の適格なアダプタに対してのみ検索します。検索は、エントリが最初の適格なアダプタに存在しない場合にのみ次のアダプタで継続されます。
SearchAllCandidatesは、Oracle Virtual Directoryのデフォルトの検索動作を保持します。
アダプタを提供する必須で繰返しのパラメータ。そのアダプタに対して、ユーザーは認証されるか、または検索される必要があります。
DNAttributesのリストを指定するオプションのパラメータ。その値は、Custom Adapter Baseから個々に構成されたアダプタ・ベースに変換される必要があります(または、その逆を行う必要がある)。このパラメータを構成しない場合は、いずれの属性もDN変換されません。
CoordinatorAdapterプラグインがSearchAllCandidatesモードに切り替えるためのインテリジェンス機能を持っているかどうかを制御するパラメータ。(このパラメータはデフォルトで無効になっているかfalseに設定されています。)
特定のケースでは、このプラグインは、SearchFirstMatchに構成されている場合でも、SearchAllCandidatesモードに切り替えるためのインテリジェント機能を持っています(検索フィルタの対象がすべての候補の場合)。たとえば、プラグインは検索フィルタが非平等コンポーネント(たとえばcn=*)を含む場合、すべてのコンポーネントがobjectclass属性(たとえばobjectclass=*)である場合などにモードを切り替えることができます。
false(デフォルト・モード)は、モードを切り替えるプラグインの機能を無効にします。
trueは、SearchAllCandidatesモードへの切替えプラグインを有効にします。
DBPasswordプラグインは、ハッシュされたパスワードを使用してデータベースに保存されているユーザーの認証を行うことができます。
注意: このプラグインは、データベース・アダプタに対してのみデプロイする必要があります。 |
次に、DBPasswordプラグイン構成パラメータのリストと説明を示します。
データベースでパスワードのハッシュ処理に使用される標準のハッシュ・アルゴリズムを指定するオプションのパラメータ。このパラメータは、MD5がデフォルト値の場合、MD2、MD5、SHA-1、SHA-256、SHA-384、SHA-512およびSSHAのハッシュ・アルゴリズムをサポートします。
データベース・パスワードに使用されているエンコーディング・メソッドを指定するオプションのパラメータ。このパラメータは、Hexがデフォルト値の場合、Base64またはHexのエンコーディング・メソッドをサポートします。
DNTranslatorプラグインは、アダプタ間の識別名値属性のネームスペースを変換します。
注意: このプラグインは、LDAPアダプタのDN属性リストで指定されるすべての属性のネームスペースを変換します。 このプラグインをLDAPアダプタに対してデプロイする必要があります。そして、この機能を必要とするすべてのLDAPアダプタに対してデプロイする必要があります。 |
次に、DNTranslatorプラグイン構成パラメータについて説明します。
DN属性値を変換する間、ネームスペースが検討されているアダプタのリストを制限するオプションのパラメータ。デフォルトでは、このパラメータを指定しない場合、Oracle Virtual Directoryでは、すべての構成されたLDAPアダプタが含まれているものと見なされます。このパラメータは、プラグイン構成で何度でも繰返し指定できます。
グループとユーザーに対して2つの異なるアダプタがある場合は、1つのアダプタからのDN構文属性(uniquemember
、memberof
など)は、別のアダプタ(デフォルト動作の対象アダプタではなく)のネームスペースに対して変換される必要があります。
たとえば、usersアダプタからのmemberof
属性値は、groupsアダプタのvirtual base
に基づいて変換される必要があります。同様に、groupsアダプタのuniquemember
属性は、usersアダプタのvirtualDN
に基づいて変換される必要があります。
DNTranslatorプラグインは、入力パラメータとしてアダプタのリストを受け取り、入力リストで構成されている任意のアダプタの仮想ネームスペースに基づいてDN属性値(プラグインがデプロイされているアダプタから)を変換します。
次に例を示します。
Adapter A1: Remote base: dc=a1,dc=com Virtual base: dc=virtual a1,dc=com Adapter A2: Remote base: dc=a2,dc=com Virtual base: dc=virtual a2,dc=com Assume the entry from A1 is something like: cn=test1,dc=virtual a1,dc=com memberof: cn=group1,dc=a2,dc=com
DNTranslatorプラグインが値A2で構成されているIncludedAdapters
パラメータを使用してA1に構成されている場合、A1からのエントリは次のようになります。
cn=test1,dc=virtual a1,dc=com memberof: cn=group1,dc=virtual a2,dc=com
HideGroupsAndUsersプラグインは、AllowedGroupNameリストで指定されているこれらのユーザー・エントリとグループ・エントリのみの公開を可能にします。他のすべてのエントリは非表示になります。
注意:
|
次に、HideGroupsAndUsersプラグイン構成パラメータについて説明します。
Oracle Virtual Directoryによって公開される複数のグループ名を指定するのにAllowedGroupName
パラメータを使用します。このプラグインは、AllowedGroupNameリスト、それらのネストされたグループおよびそれらのネストされたグループのユーザーに含まれるそれらのグループのみを公開します。他のグループとユーザーは非表示です。たとえば、AllowedGroupNameパラメータ値がMyGroup1
の場合、cn=MyGroup1
属性と値のペアを持つグループが許可されたグループとみなされます。この繰返しのパラメータはオプションです。
AllowedGroupNameパラメータを指定しない場合は、Oracle Virtual Directoryはすべてのグループとユーザーを返します。
注意:
|
グループ・オブジェクトクラスを指定するのにGroupObjectClass
パラメータを使用します。デフォルトでは、グループ・オブジェクトクラスはgroupOfUniqueNames
です。このパラメータはオプションです。
ユーザー・オブジェクトクラスを指定するのにUserObjectClass
パラメータを使用します。デフォルトでは、ユーザー・オブジェクトクラスはperson
です。このパラメータはオプションです。
Oracle Virtual Directoryは、エンタープライズ・ユーザー・セキュリティ(EUS)、Real Application Security (RAS)、およびOracle Net Servicesとの統合を簡素化するためのプラグインが組み込まれています。この項では、この統合に関連するプラグインについて説明します。この項の内容は次のとおりです。
EUSActiveDirectoryプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する際に、ユーザーIDがMicrosoft Active Directoryに格納されている場合にのみ使用します。EUSActiveDirectoryプラグインは、Active Directoryの属性を、エンタープライズ・ユーザー・セキュリティ・データベースで使用できる形式に変換します。
EUSiPlanetプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する際に、ユーザーIDがOracle Directory Server Enterprise Edition(旧称はSun Java System Directory Server)に格納されている場合にのみ使用します。EUSiPlanetプラグインは、Oracle Directory Server Enterprise Editionの属性を、エンタープライズ・ユーザー・セキュリティ・データベースで使用できる形式に変換します。
EUSOIDプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する際に、ユーザーIDがOracle Internet Directoryに格納されている場合にのみ使用します。EUSOIDプラグインは、Oracle Internet Directoryの属性を、エンタープライズ・ユーザー・セキュリティ・データベースで使用できる形式に変換します。
EUSeDirectoryプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する際に、ユーザーIDがNovell eDirectoryに格納されている場合にのみ使用します。EUSeDirectoryプラグインは、Novell eDirectoryの属性を、エンタープライズ・ユーザー・セキュリティ・データベースで使用できる形式に変換します。
EUSMemberDNMappingプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する場合にのみ使用します。EUSMemberDNMappingプラグインは、外部リポジトリに格納されているエンタープライズ・ユーザー・セキュリティ・データベースの管理者グループの識別名(DN)ネームスペースを、Oracle Virtual Directoryがデータベースに送信するのと同じペイロードに変換します。
次に、EUSMemberDNMappingプラグイン構成パラメータのリストと説明を示します。
エンタープライズ・ユーザー・セキュリティ・データベースの管理者グループが配置されているリモートの外部リポジトリ(Active Directory、Oracle Internet Directory、Oracle Directory Server Enterprise Edition)のベースDN。
Oracle Virtual Directoryが公開するグループ名のベースDN。
注意: 一般的に、remoteDomainDNおよびlocalDomainDn構成パラメータの値は同一です。 |
EUSLockoutプラグインは、Oracle Virtual DirectoryをOracleのエンタープライズ・ユーザー・セキュリティ・データベース製品と統合する場合にのみ使用します。LDAPサーバーには、バインドの試行が何度か失敗したらユーザー・アカウントをロックする機能があります。EUSLockoutプラグインにより、Oracle Virtual Directoryとエンタープライズ・ユーザー・セキュリティの統合では、このロックアウト機能を使用し、次のようにして、バックエンドのLDAPサーバーのパスワード・ロックアウト・ポリシーを適用できます。
Oracleデータベースへの不正なログインでは、バックエンドのLDAPサーバーにログインの失敗が記録されます。
Oracleデータベースへの適切なログインにより、バックエンドのLDAPサーバーのログインの失敗数がリセットされます。
注意: この機能は、Active Directoryを使用する統合では使用できません。 |
ロックされたユーザー・アカウントを使用して、Oracleデータベースにログインすることはできません。
EUSLockoutプラグインを構成するには、次の手順を実行する必要があります。
バックエンドのLDAPサーバーに応じて、Active Directoryの場合はActiveDirectory、Oracle Directory Server Enterprise Editionの場合はiPlanet、Novell eDirectoryの場合はeDirectoryなどの値を使用し、directoryTypeパラメータを作成します。
Oracle Virtual Directory-Enterprise User Security統合のユーザー・コンテナの名前を使用して、ネームスペースを作成します。
ONamesプラグインは、Oracle Virtual DirectoryをOracle Net Servicesと統合する場合にのみ使用します。このプラグインは、ソースLDAPディレクトリに固有のエントリを削除し、Oracle Virtual DirectoryとOracle Net Servicesの統合を容易にします。
Oracleデータベースが、エンタープライズ・ユーザー・セキュリティおよびOracle Net Servicesの統合のOracle Virtual Directoryに問合せを行う場合、LDAPスキーマはOracle Internet Directoryのスキーマと同じ名前であることが想定されます。ただし、Oracle Internet DirectoryとOracle Virtual Directoryでは、LDAPスキーマの格納方法が異なります。SubschemaSubentryプラグインでは、Oracle Virtual Directoryとエンタープライズ・ユーザー・セキュリティまたはOracle Virtual DirectoryとOracle Net Servicesの統合が機能できるよう、Oracleデータベースの問合せが透過的にリダイレクトされます。
OracleのReal Application Security機能を使用してOracle Virtual Directoryを統合する場合にのみReal Application Securityプラグインを使用します。
注意: このプラグイン用に |
次に、Real Application Securityプラグイン構成パラメータのリストと説明を示します。
LDAPアダプタで定義されたserverType
から得られたパラメータ。
バックエンドLDAPでネーミング属性の必須パラメータ。
バックエンド・サーバーに定義されたグローバル・ユニバーサル識別子(GUID)属性を指定するオプションのパラメータ。(デフォルトではディレクトリ・タイプに基づいて導出されます。)
アカウントのロックアウトを有効または無効にするオプションのパラメータ。(デフォルトでは有効化されています。)
ネストされたグループの解決を有効または無効にするオプションのパラメータ。(デフォルトでは無効化されています。)
グループにSearchBase DNを指定するオプションのパラメータ。(デフォルトではアダプタのルートと同じです。)
バックエンド・ディレクトリでグループ・エントリを識別するのにどのLDAP検索フィルタを使用するかを指定するオプションのパラメータ。(デフォルトではobjectclass=groupofuniquenamesです。)
グループ・メンバーに属性名を指定するオプションのパラメータ。(デフォルトはuniquememberです。)
RAS DBがログインにどの属性名を使用するかを指定するオプションのパラメータ。(デフォルトはuidです。)
マッピングされる必要のある任意の属性を指定するオプションのパラメータ。フォーマットはattr1=attr2です。たとえば、cn=samaccountnameです。
Microsoft Active Directoryには、多くのアプリケーションで処理できない機能が複数ありますOracle Virtual Directoryには、アプリケーションに影響を与えず、再コーディングや再構成もせずに、アプリケーションがそれらの独自の機能を使用できるようにする複数のプラグインが組み込まれています。
この項では、Oracle Virtual Directoryに含まれているMicrosoft Active DirectoryおよびActive Directory Application Mode(ADAM)のプラグインについて説明します。この項の内容は次のとおりです。
Active DirectoryおよびADAMには、LDAPを使用したユーザーのパスワードの更新に関して、次に示すような特別なルールがあります。
パスワードの更新はセキュアなSSL接続経由でのみ行う。
ユーザーが自分のパスワードを更新する場合は、同じ変更操作で新しいパスワードが変更追加に含まれている状態で、元のパスワードが変更削除に含まれている必要がある。
以前のパスワードがわからなくても、ユーザー・パスワードをリセットできるのは管理者のみ。
Active DirectoryではuserPassword属性は使用せず、unicodePwd属性(Unicode形式)を使用する。
ActiveDirectory Passwordプラグインは、アプリケーションがActive Directoryのパスワード更新ルールを使用するように設計されておらず、すべての操作においてSSL経由でActive DirectoryまたはADAMに接続するのが不都合な場合に、Active Directoryのパスワード更新ルールを使用して管理者を支援します。ActiveDirectory PasswordプラグインをSSLに対応していないアダプタに構成し、そのプラグインがSSL対応のアダプタを指すようにすることにより、Active Directoryのパスワード更新がinetOrgPersonディレクトリのパスワード更新であるかのように機能します。
重要: ActiveDirectoryプラグインは、LDAPアダプタにのみ構成する必要があります(通常はMicrosoft Active Directory)。 |
ActiveDirectory Passwordプラグインには、次の構成パラメータがあります。
リクエストにuserPassword属性が含まれる場合に、ActiveDirectory Passwordプラグインがリクエストを再ルーティングするアダプタの名前。指定されたアダプタでは、仮想ルートが現行のアダプタと同一で、ルーティングの可視性が内部に設定されている必要があります。adapterパラメータが定義されていない場合は、現行のアダプタが使用されます。
パスワードをunicodePwd属性に変換する必要がある(true)か、不要である(false)かを示します。サポートされる値は、trueまたはfalseです。デフォルト値はtrueです。
Active DirectoryおよびADAMの属性には1000を超える値があり、戻された値の範囲を含む名前が付けられて、一度に1000の属性が戻されます(Windows 2003では1500)。クライアントには、次の書式で範囲が戻されます。
member;1-1000: somevalue
次の1000のエントリを取得するためには、クライアント・アプリケーションが問合せを繰り返し、属性メンバー1001-2000をリクエストすることを把握している必要があります。このため、アプリケーションでは、その他のディレクトリ製品に比べて独特な方法でActive Directoryに対応する必要があります。
Active Directory Ranged Attributesプラグインにより、Active DirectoryまたはADAMによって範囲が指定された属性が検出され、自動的にすべての値が取得されます。値の範囲が属性名に追加されるため、Active Directory Ranged Attributesプラグインが有効化されていない場合、LDAPアダプタのdn属性LDAP構成オプションは適用されません。
重要: Active Directory Ranged Attributesプラグインにより、アダプタのどの属性をdn属性としてマークするかが決定され、適切なベース・マッピングが実行されます。LDAPアダプタでアダプタ・プラグインとして使用できるのは、Active Directory Ranged Attributesプラグインのみです。 |
InetADプラグインは、ObjectClass Mapperプラグイン、Active Directory Ranged AttributesプラグインおよびActive Directory Passwordプラグインの機能を結合し、複数のActive Directory独自の機能を処理するために単一のプラグインを構成できるようにします。
Active DirectoryではActive DirectoryのNOS要件に固有の属性を持つuserおよびgroupオブジェクト・クラスが使用される一方で、ほとんどのLDAPディレクトリで、ユーザーやグループにinetOrgPersonおよびgroupOfUniqueNamesオブジェクト・クラスが使用されるため、InetADプラグインはObjectClass Mappingプラグインを利用します。
InetADプラグインを使用すると、Oracle Virtual DirectoryでActive DirectoryまたはADAMディレクトリ・サーバーにinetOrgPersonスキーマがあるように使用できます。InetADプラグインは、パラメータ構成に基づいて、属性およびオブジェクト・クラスの名前を変更し、Active Directoryのユーザーが必要な属性をすべて使用できるように属性を追加できます。構成パラメータが使用されていない場合、InetAdプラグインはActive DirectoryのuserまたはgroupをinetOrgPersonまたはgroupOfUniqueNamesオブジェクト・クラスとして使用できます。
注意: 属性のマッピング関係が生じた場合、 |
次に、InetADプラグイン構成パラメータのリストと説明を示します。
ユーザーのアクティブ化を実行する際に使用するディレクトリのタイプ。サポートされている値はSunOne、eDirectory、ADAMおよびActiveDirectoryです。次に例を示します。
パラメータ名: directoryType
パラメータ値: ActiveDirectory
activationAttributeパラメータは、アプリケーションに、基礎となるディレクトリのユーザー・アクティベーション・システムに関する情報がない場合に使用します。activationAttributeパラメータにより、ユーザー・アクティベーション・フラグが含まれている着信属性が、Oracle Virtual Directoryに通知されます。その後、このフラグは、ディレクトリ固有の属性およびフラグにマップされます。次に例を示します。
パラメータ名: activationAttribute
パラメータ値: myuseraccountcontrol
ユーザーを非アクティブとしてマークする必要があることを示すactivationAttribute
に指定された属性値のカンマ区切りリスト。
ユーザーをアクティブとしてマークする必要があることを示すactivationAttribute
に指定された属性値のカンマ区切りリスト。
client-ObjectClass = AD-ObejctClass
という書式でマップされるobjectClass。次に例を示します。
パラメータ名: mapObjectClass
パラメータ値: inetOrgPerson=user
mapObjectClassパラメータは、複数のマッピングに複数回使用できます。デフォルト値は、groupOfUniqueNames=group, inetOrgPerson=userです。
追加プロセス中にユーザーに属性を追加します。オプションのオブジェクト・クラス値は、特定のオブジェクト・クラスのみに属性を追加するために、構成名に追加できます。たとえば、ユーザー・オブジェクト・クラスのみにuserAccountControl属性を追加するには、次のものを使用します。
パラメータ名: addAttribute-user
パラメータ値: userAccountControl=546
注意: 名前をパーセンテージ文字(%)で囲んで入力することにより、別の属性値が式として代入されます。デフォルト構成は次のとおりです。 addAttribute-user: useraccountcontrol=544, addAttribute-group:samaccountname=%cn%, addAttribute-group: grouptype=-2147483646 |
追加操作中に、戻されるすべてのエントリから削除される属性のカンマ区切りのリスト。条件のオブジェクト・クラス値は、特定のオブジェクト・クラスの属性を除外するために、パラメータ名に追加できます。次に例を示します。
パラメータ名: filterAttribute
パラメータ値: objectsid,memberof,samaccountname
client-Attribute=AD-attribute
という書式でマップされる属性。次に例を示します。
パラメータ名: mapAttribute
パラメータ値: uniqueMember=member
mapAttributeパラメータは、複数のマッピングに複数回使用できます。デフォルト値は、uniqueMember=member、uid=samaccountname、ntgrouptype=grouptypeです。
追加操作中に削除する必要のあるオブジェクト・クラスのカンマ区切りのリスト。Active Directory for Windows 2000では、エントリの追加中に補助オブジェクト・クラスをリストすることはできませんが、Microsoft Active DirectoryおよびADAM for Windows Server 2003では補助クラスをリストできます。デフォルト値は、person、organizationalPersonです。
filterObjectClassOnModifyパラメータを使用して、変更操作中にobjectClassエントリの変更を削除します。サポートされる値はtrue (変更を削除)またはfalse (変更を削除しない)です。trueがデフォルトです。次に例を示します。
パラメータ名: filterObjectClassOnModify
パラメータ値: true、false
パスワードをunicodePwd属性に変換する必要がある(true)か、不要である(false)かを示します(ADAM)。サポートされる値は、trueまたはfalseです。デフォルト値はtrueです。
リクエストにuserPassword
が含まれる場合に、このプラグインがリクエストを再ルーティングするアダプタの名前。sslAdapterパラメータを設定しない場合は、現行のアダプタが使用されます。sslAdapterパラメータによって指定されるアダプタは、次のようになっている必要があります。
InetADプラグインが構成されているアダプタと同じローカル・ベース
ルーティングの可視性がInternalに設定されている
Oracle Virtual Directoryには、Oracle Access Managerとの統合を簡略化するプラグインが含まれています。この項では、この統合に関連するプラグインについて説明します。この項の内容は次のとおりです。
Oracle Virtual DirectoryとOracle Access Managerの統合の場合のみ、OAMPolicyControlプラグインは、認証にLDAPを使用し、Oracle Access Managerポリシー制御を使用する必要があるがOracle Access Managerと統合できないアプリケーションに対応します。
OAMPolicyControlプラグインをデプロイする前に、次のことが必要です。
Oracle Access Managerポリシー構成を使用しているLDAPアダプタすべてについて、「バインド」パススルー設定を「なし」に設定します。
このプラグインは、すべての認証を処理し、プロキシ資格証明を使用してすべての操作を実行します。
Oracle Access Managerに対して別のアダプタを構成します。
これらのアダプタは、Oracle Access Managerポリシーを使用するには、OAMPolicyControlプラグインを使用する必要があります。これらのアダプタを同じOracle Virtual Directoryサーバーにデプロイする場合は、次のオプションのいずれかを構成する必要があります。
アダプタごとに異なるLDAPネームスペースを使用します。Oracle Access Managerのアダプタのネームスペースは、汎用LDAPクライアントが使用するネームスペースから独立したものにする必要があります。
「Oracle Virtual Directory」ビューを、別のOracle Access Managerアダプタに対するリクエストを区別するアクセス・レベルの基準を指定して使用します。
次のようにしてOracle Access Manager Access Serverを構成します。
Oracle Virtual Directoryに対応するプロキシ・リソースを作成します。
アイデンティティ・サーバーおよびアクセス・サーバー用のポリシー・ドメインを無効化します。これは、このプラグインがOBSSO Cookieをキャッシュしないためです。
AccessSDKを次のように構成します。
AccessServerSDK\oblix\tools\configureAccessGateを使用して、Oracle Access Manager Access Server用にAccessSDKインストールを構成します。
-Djava.library.pathがAccessSDKインストールを指すようにすることで、Oracle Virtual Directoryコンポーネントを起動するようにopmnを構成します。
INSTANCE_HOME/config/OPMN/opmn/opmn.xmlファイルを次のように編集します。
<ias-component id="ovd1"> <process-type id="OVD" module-id="OVD"> <module-data> <category id="start-options"> <data id="java-bin" value="$ORACLE_HOME/jdk/bin/java"/> <data id="java-options" value="-server -Xms512m -Xmx512m -Dvde.soTimeoutBackend=0 -Doracle.security.jps.config=$ORACLE_ INSTANCE/config/JPS/jps-config-jse.xml -Djava.library.path=AccessSDK_install_ dir/AccessSDK/AccessServerSDK/oblix/lib/"/> <data id="java-classpath" value="$ORACLE_ HOME/ovd/jlib/vde.jar$:$ORACLE_HOME/jdbc/lib/ojdbc6.jar"/> </category> </module-data> <stop timeout="120"/> </process-type> </ias-component>
AccessSDK_install_dir/AccessServerSDK/oblix/libからORACLE_HOME/ovd/plugins/libにjobaccess.jarファイルをコピーします。
注意: 前述の前提条件となる構成を正常に完了しないと、Oracle Virtual DirectorによってNoClassDefFoundエラーが生成されます。 |
OAMPolicyControlプラグインには、次の構成パラメータがあります。
注意: useAccessAuthPolicyを除く次のすべての構成パラメータが、OAMPolicyControlプラグインのデプロイに必要です。 |
Oracle Access Managerサーバーによって構成されるOracle Virtual Directory用のプロキシ・リソースを指定します。たとえば、//host:port/ovd_proxy_resourceなどです。
identityproxyidパラメータは、アイデンティティ・サーバーに対する認証に使用され、管理者のusernameAttributeの値を指定します。
必須ライブラリを含むAccessSDKインストール・ディレクトリを指定します。たとえば、AccessSDK_INSTALL_DIRECTORY/AccessServerSDK/などです。
アイデンティティ・サーバーに対する認証用の管理者パスワード。
アイデンティティ・サーバーのum_modifyUser Webサービスのリスニング・エンドポイントに対応するURLを指定します。たとえば、http://host:port/identity/oblix/apps/userservcenter/bin/userservcenter.cgiなどです。
アイデンティティ・サーバーのログイン属性となるように構成される属性を指定します。たとえば、uidやgenUserIdです。
useAccessAuthPolicyは、オプションの大文字小文字を区別しないパラメータであり、プロキシ・リソースにアクセスする際のOracle Access Managerサーバーの認証ポリシーの使用方法を決定します。サポートされている値はTrueおよびFalseです。デフォルト設定はFalseです。