【问题标题】:Glassfish 3.1 ldapRealm ActiveDirectory group membershipGlassfish 3.1 ldapRealm ActiveDirectory 组成员资格
【发布时间】:2012-01-13 15:14:45
【问题描述】:

我正在尝试在 Glassfish 3.1 上实现 ldapRealm。我可以使用以下配置正常登录,但是我无法正确获得 AD 的组成员身份。我关注 group memberships in (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  

请注意,找到的组成员身份为空。如果需要更多信息,请告诉我。

【问题讨论】:

    标签: ldap glassfish jaas active-directory-group


    【解决方案1】:

    周末,我发现我的 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-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.
    

    【讨论】:

      【解决方案2】:

      objectClass=Group,而不是您的搜索过滤器中的objectCategory=group

      【讨论】:

      • 嗨,我在另一个 SO 问题上读到,它们完全相同,只有 objectCategory 被索引。我还在ldapsearch 上尝试了它们,并产生了相同的输出。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      相关资源
      最近更新 更多