2012-01-13 4 views
1

Glassfish 3.1에서 ldapRealm을 구현하려고합니다. 다음 구성으로 정상적으로 로그인 할 수는 있지만 AD의 그룹 구성원 자격을 올바르게 얻을 수는 없습니다. 나는 group memberships in (AD) ldap Realm을 따라 group-search-filter을 포함했지만 여전히 작동하지 않습니다.Glassfish 3.1 ldapRealm ActiveDirectory 그룹 구성원

<auth-realm name="ADREALM" classname="com.sun.enterprise.security.auth.realm.ldap.LDAPRealm"> 
    <property name="directory" value="ldap://domain.com:389"></property> 
    <property name="search-filter" value="(&amp;(objectCategory=user)(sAMAccountName=%s))"></property> 
    <property name="search-bind-dn" value="[email protected]"></property> 
    <property description="null" name="base-dn" value="OU=CORP Users,DC=domain,DC=com"></property> 
    <property name="group-search-filter" value="(&amp;(objectCategory=group)(member=%d))"></property> 
    <property name="search-bind-password" value="password"></property> 
    <property name="jaas-context" value="ldapRealm"></property> 
</auth-realm> 

가 나는 또한 서버 설정에 다음 옵션을 추가> JVM 글래스 피쉬의 로그 항목이

-Djava.naming.referral=follow 

을 :

FINE: [Web-Security] hasUserDataPermission perm: (javax.security.jacc.WebUserDataPermission /j_security_check POST) 
FINE: [Web-Security] hasUserDataPermission isGranted: true 
FINEST: Processing login with credentials of type: class com.sun.enterprise.security.auth.login.common.PasswordCredential 
FINE: Logging in user [kip] into realm: ADREALM using JAAS module: ldapRealm 
FINE: Login module initialized: class com.sun.enterprise.security.auth.login.LDAPLoginModule 
FINE: search: baseDN: OU=CORP Users,DC=domain,DC=com filter: (&(objectCategory=user)(sAMAccountName=kip)) 
FINE: Found user DN: CN=Kipling,OU=IT,OU=CORP Users,DC=domain,DC=com 
FINE: LDAP:Group search filter: (&(objectCategory=group)(member=CN=Kipling,OU=IT,OU=CORP Users,DC=domain,DC=com)) 
FINE: LDAP: Group memberships found: 
FINE: LDAP: login succeeded for: kip 
FINE: JAAS login complete. 
FINE: JAAS authentication committed. 
FINE: Password login succeeded for : kip 
FINE: Set security context as user: kip 

그룹 구성원이 발견 공지 것을
여기 내 web.xml에의 비었다. 더 많은 정보가 필요하면 알려주십시오.

답변

4

주말 내 ldapRealm 구성이 잘못된 점을 알아 냈습니다. 내가 base-dn을 사용자 ou 브랜치에 설정하고 그룹 정보가 다른 ou 브랜치에 있기 때문에, glassfish는 내 그룹 dn을 찾을 수 없습니다. (너무 제한적 - SO의 질문 중 하나에 의해 언급 됨). group-search-filter을 작동 시키려면 ldapRealm에 그룹 속성 검색을위한 group-base-dn이라는 추가 속성을 추가해야했습니다. 내가 설정하지 않는 한

<property name="group-base-dn" value="OU=CORP Groups,DC=domain,DC=com"></property> 

그래서, 내 base-dnDC=domain,DC=com 기본에 나는 group-base-dn 속성을 포함해야합니다. 다음은 마지막 ldapRealm 구성입니다.

<auth-realm name="ADREALM" classname="com.sun.enterprise.security.auth.realm.ldap.LDAPRealm"> 
    <property name="directory" value="ldap://domain.com:389"></property> 
    <property name="jaas-context" value="ldapRealm"></property> 
    <property name="base-dn" value="OU=CORP Users,DC=domain,DC=com" description="null"></property> 
    <property name="search-filter" value="(&amp;(objectCategory=user)(sAMAccountName=%s))"></property> 
    <property name="group-base-dn" value="OU=CORP Groups,DC=domain,DC=com"></property> 
    <property name="group-search-filter" value="(&amp;(objectCategory=group)(member=%d))"></property> 
    <property name="search-bind-dn" value="[email protected]"></property> 
    <property name="search-bind-password" value="password"></property> 
</auth-realm> 

누구나 ldapRealm을 구성하는 데 도움이되기를 바랍니다. 감사!

첨부 글래스 피쉬 로그 :

FINE: search: baseDN: OU=CORP Users,DC=domain,DC=com filter: (&(objectCategory=user)(sAMAccountName=kip)) 
FINE: Found user DN: CN=Kipling,OU=IT,OU=CORP Users,DC=domain,DC=com 
FINE: LDAP:Group search filter: (&(objectCategory=group)(member=CN=Kipling,OU=IT,OU=CORP Users,DC=domain,DC=com)) 
FINE: LDAP: Group memberships found: Application Administrators 
FINE: LDAP: login succeeded for: kip 
FINE: JAAS login complete. 
FINE: JAAS authentication committed. 
0

objectClass=Group 아니요, 검색 필터에 objectCategory=group이 아닙니다.

+0

안녕하세요, 나는 그들이 매우 같은 단지 수 objectcategory 인덱싱 것을, 다른 SO 질문에 읽어 보시기 바랍니다. 나는 또한 그들 모두를'ldapsearch'에서 시도해 보았고 같은 출력을 냈다. – KipKapKup