В выходные я выяснил, что не так с моей конфигурацией 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="(&(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="(&(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.