私は、カスタムログインレルムを持つWildFly 9.0.2サーバ上でWebアプリケーションを実行しています(組織単位Bに対して複数の組織単位Aを再帰的にクエリする必要があります。ユーザの複数のOUから再帰的にLDAPロールをクエリします
ユーザー自身のユーザー名(例えばテスタ)、パスワード(たとえば、何でも)を提供してからのUserGroupを選択することで、ウェブサイトにログイン:そうは次のようにstandalone.xmlに設定されたユーザー)の単位Cドロップダウンメニュー(例:UserGroupA)。 次に、LdapLoginModuleを拡張するカスタムログインモジュール(de.test.LoginModule.class)は、スタンドアロンXMLからプレフィックスを取り出し、その後に接尾辞を追加することによってプリンシパル文字列を構築することによって、ロールの検索を実行します。
接頭辞:ログインモジュールによってuid=
ビルド:testA,ou=UserGroupA
サフィックス:に結果の,ou=users,dc=test,dc=de
:今完璧に動作しuid=testA,ou=UserGroupA,ou=users,dc=test,dc=de
。 ou=groups,dc=test,dc=de
のロールが取得され、ロールに従ってweb.xmlで定義されたセキュリティ制約が実行されます。
<security-constraint>
<display-name>Test-Service</display-name>
<web-resource-collection>
<web-resource-name>Test</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description>Only Project Processors may see this</description>
<role-name>Project Processor</role-name>
</auth-constraint>
</security-constraint>
組織単位「ProjectControlCenterは」そうのように見えた、LDAPツリー構造に追加されました:
dc=test,dc=de
|-- ou=applications
| |-- ou=ProjectControlCenter
| | |-- ou=permissions
| | | |-- cn=group.Project Processor.manage
| | | |-- cn=group.Project Processor.read
| | | |-- cn=group.Project Monitorer.read
| | | |-- ...
| | |-- ou=resources
| | | |-- cn=ProjectControlCenter.Applicaton
| | | |-- cn=ProjectControlCenter.List
| | | |-- cn=ProjectControlCenter.System
| | | |-- ...
|-- ou=groups
| | |-- cn=Project Processor
| | |-- cn=Project Monitorer
| | |-- ...
| |-- ou=users
| | |-- ou=UserGroupA
| | | |-- uid=testA
| | | |-- uid=testB
| | | |-- uid=testC
| | |-- ou=UserGroupB
| | |-- ...
は今、私はou=groups,dc=test,dc=de
としての役割だけでなく、すべてではないだけに照会する必要がありますou=permissions,ou=ProjectControlCenter,ou=applications,dc=test,dc=de
ここで、割り当てられたロールはのユニークなメンバーであり、ユーザーに追加します。 さらに、ou=resources,ou=ProjectControlCenter,ou=applications,dc=test,dc=de
を取得するためには、ou=permissions,ou=ProjectControlCenter,ou=applications,dc=test,dc=de
が固有のメンバーであり、ユーザーに追加するクエリが必要です。
質問:特定のユーザーのすべてのグループ、それらのグループのアクセス許可、LDAP構成によるこれらのアクセス許可のリソースを再帰的に照会する方法はありますか、LdapLoginModule.classのcreateLdapInitContext(String username, Object credential)
メソッドをオーバーロードする必要がありますか必要なクエリを達成するために?