2017-04-03 22 views
10

Tôi đang chạy Ứng dụng Web trên Máy chủ WildFly 9.0.2 với Trường Đăng nhập Tuỳ chỉnh (cần truy vấn đệ quy nhiều Đơn vị Tổ chức A cho Đơn vị Tổ chức B được truy vấn từ Tổ chức đơn vị C cho một người dùng) được cấu hình trong standalone.xml như vậy:Truy vấn đệ quy các vai trò LDAP từ nhiều OU cho một Người dùng

<security-realm name="LoginRealm"> 
    <authentication> 
     <ldap connection="EC2" base-dn="ou=users,dc=test,dc=de"> 
      <username-filter attribute="uid"/> 
     </ldap> 
    </authentication> 
</security-realm> 
... 
<security-domain name="other" cache-type="default"> 
    <authentication> 
     <login-module code="de.test.LoginModule" flag="required"> 
      <module-option name="principalDNPrefix" value="uid="/> 
      <module-option name="principalDNSuffix" value=",ou=users,dc=test,dc=de"/> 
      <module-option name="rolesCtxDN" value="ou=groups,dc=test,dc=de"/> 
      <module-option name="roleAttributeID" value="cn"/> 
      <module-option name="roleAttributeIsDN" value="false"/> 
      ... 

người dùng đăng nhập vào trên trang web bằng cách cung cấp tên của mình (ví dụ như Testa), mật khẩu (ví dụ như bất cứ điều gì) và chọn ra một nhóm từ một trình đơn thả xuống (ví dụ UserGroupA). Sau đó, mô-đun đăng nhập tùy chỉnh (de.test.LoginModule.class) mở rộng LdapLoginModule thực hiện tra cứu vai trò bằng cách tạo chuỗi chính bằng cách lấy tiền tố từ xml độc lập và thêm hậu tố sau đó
ví dụ: tiền tố: uid=
xây dựng bởi LoginModule: testA,ou=UserGroupA
Suffix: ,ou=users,dc=test,dc=de
Hệ quả là: uid=testA,ou=UserGroupA,ou=users,dc=test,dc=de mà ngay bây giờ hoạt động hoàn hảo. Các vai trò từ ou=groups,dc=test,dc=de được truy xuất và các ràng buộc bảo mật được xác định trong tệp web.xml với các vai trò theo được thực hiện.

<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> 

Bây giờ Organizational Unit "ProjectControlCenter" được bổ sung vào cơ cấu cây LDAP, trông giống như vậy:

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 
| | |-- ... 

Bây giờ tôi cần phải truy vấn không chỉ là vai trò như ou=groups,dc=test,dc=de mà còn tất cả các ou=permissions,ou=ProjectControlCenter,ou=applications,dc=test,dc=de trong đó vai trò được chỉ định là thành viên duy nhất và thêm vai trò đó cho người dùng. Ngoài ra, cần có một truy vấn khác để có được tất cả các ou=resources,ou=ProjectControlCenter,ou=applications,dc=test,dc=de trong đó ou=permissions,ou=ProjectControlCenter,ou=applications,dc=test,dc=de là thành viên duy nhất của, thêm nó vào người dùng. Vì vậy, câu hỏi đặt ra là: Có cách nào để truy vấn đệ quy tất cả các nhóm cho một người dùng nào đó, quyền đối với các nhóm và tài nguyên đó cho các quyền đó thông qua cấu hình LDAP hay tôi cần quá tải phương thức createLdapInitContext(String username, Object credential) của LdapLoginModule.class để đạt được các truy vấn cần thiết?

Trả lời

0

Chỉ có thể nhưng ở một mức độ nhất định. Trường hợp sử dụng của bạn có vẻ khá phức tạp và cá nhân tôi sẽ tránh kiểu thiết kế đó. Không chắc chắn nếu bạn đã kiểm tra nhưng các câu hỏi của bạn có vẻ liên quan đến một số here.

Các vấn đề liên quan