1

Glassfish 3.1 に ldapRealm を実装しようとしています。次の構成で問題なくログインできますが、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  

見つかったグループ メンバーシップが空であることに注意してください。さらに情報が必要な場合はお知らせください。

4

2 に答える 2

4

週末に、ldapRealm構成の何が問題になっているのかを理解しました。base-dnをusersouブランチに設定し、グループ情報が別のouブランチにあるため、glassfishは私のグループdnを見つけることができませんでした。(制限が強すぎる-SOの質問の1つでも言及されています)。作業を開始するには、グループデータ を取得するための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を構成するのに役立つことを願っています。ありがとう!

添付のGlassfishログ:

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.
于 2012-01-16T04:37:28.867 に答える
0

objectClass=GroupobjectCategory=group検索フィルターにはありません。

于 2012-01-15T23:41:55.463 に答える