2017-04-03 6 views
10

사용자 지정 로그인 영역이있는 WildFly 9.0.2 서버에서 웹 응용 프로그램을 실행하고 있습니다. 조직에서 쿼리 된 조직 구성 단위 B에 대해 여러 조직 구성 단위 A를 반복적으로 쿼리해야합니다. 그래서 같은 standalone.xml에 구성된 사용자 단위 C는) :사용자에 대한 여러 OU에서 반복적으로 LDAP 역할을 쿼리합니다.

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

사용자는 예를 들어, 자신의 이름 (예 : 테 스타), 암호 (제공하여 웹 사이트에 무엇이든)과에서 사용자 그룹을 선택을에 로그인 드롭 다운 메뉴 (예 : 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에 정의 된 보안 제한 조건이 실행됩니다.

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으로뿐만 아니라 역할을 조회 할뿐만 아니라 모든 :

<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 트리 구조에 추가 ou=permissions,ou=ProjectControlCenter,ou=applications,dc=test,dc=de 여기서 할당 된 역할은의 고유 회원이며이를 사용자에게 추가합니다. ou=permissions,ou=ProjectControlCenter,ou=applications,dc=test,dc=de이 고유 한 구성원 인 모든 ou=resources,ou=ProjectControlCenter,ou=applications,dc=test,dc=de을 얻으려면 또 다른 쿼리가 필요하며이를 사용자에게도 추가해야합니다.

질문 : 특정 사용자에 대한 모든 그룹, 해당 그룹의 사용 권한 및 LDAP 구성을 통한 사용 권한에 대한 재귀 쿼리 방법이 있습니까? 필요한 쿼리를 달성하기 위해?

답변

0

가능하지만 어느 정도까지만 가능합니다. 유스 케이스가 상당히 복잡해 보이고 개인적으로 그런 종류의 디자인을 피할 것입니다. 이미 확인했는데 질문이 하나의 here과 관련되어있는 것 같습니다.