Glassfish 3.1 ldapRealm Членство в группе ActiveDirectory - PullRequest
1 голос
/ 13 января 2012

Я пытаюсь реализовать ldapRealm на Glassfish 3.1. Я могу нормально войти в систему со следующей конфигурацией, однако мне не удалось правильно получить членство в группе AD. Я следовал за членством в группах в (AD) ldap Realm , чтобы включить group-search-filter, но все еще не работает. Вот мой web.xml:

<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="admin@domain.com"></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>

Я также добавляю следующую опцию в server-config> JVM

-Djava.naming.referral=follow  

Запись журнала Glassfish:

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  

Обратите внимание, что найденное членство в группе пусто. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Ответы [ 2 ]

4 голосов
/ 16 января 2012

В выходные я выяснил, что не так с моей конфигурацией ldapRealm. Так как я установил свой base-dn для пользователей в вашей ветке и информация о группе находится в другой ветке, 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-dn на базовый DC=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="admin@domain.com"></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 голосов
/ 16 января 2012

objectClass=Group, а не objectCategory=group в вашем поисковом фильтре.

...