Java GlassFish安全领域、Active Directory和转介
我已经在Glassfish中设置了一个安全域,以针对Active Directory服务器进行身份验证。领域的配置如下所示:Java GlassFish安全领域、Active Directory和转介,java,active-directory,glassfish,Java,Active Directory,Glassfish,我已经在Glassfish中设置了一个安全域,以针对Active Directory服务器进行身份验证。领域的配置如下所示: Class Name: com.sun.enterprise.security.auth.realm.ldap.LDAPRealm JAAS context: ldapRealm Directory: ldap://172.16.76.10:389/ Base DN: dc=smallbusiness,dc=local search-filter: (&(ob
Class Name: com.sun.enterprise.security.auth.realm.ldap.LDAPRealm
JAAS context: ldapRealm
Directory: ldap://172.16.76.10:389/
Base DN: dc=smallbusiness,dc=local
search-filter: (&(objectClass=user)(sAMAccountName=%s))
group-search-filter: (&(objectClass=group)(member=%d))
search-bind-dn: cN=Administrator,CN=Users,dc=smallbusiness,dc=local
search-bind-password: abcd1234!
该领域功能正常,我可以登录,但每次登录时,我都会在日志中看到以下错误:
SEC1106: Error during LDAP search with filter [(&(objectClass=group)(member=CN=Administrator,CN=Users,dc=smallbusiness,dc=local))].
SEC1000: Caught exception.
javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'dc=smallbusiness,dc=local'
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2820)
....
....
ldaplm.searcherror
在搜索解决方案时,我发现建议将java.naming.referral=follow
添加到域的属性中。然而,在我添加这个之后,GlassFish需要20分钟才能通过Active Directory的身份验证。我怀疑这是Active Directory服务器上的DNS问题。Active Directory服务器是虚拟机中的普通Windows server 2003安装程序
非常感谢您的帮助/推荐 希望您已经解决了这个问题,但以防万一:
后来,我为这个应用程序创建了一个特定的组,并进行了相应的更改。希望您已经解决了这个问题,但以防万一:
后来,我为这个应用程序创建了一个特定的组,并进行了相应的更改。试图解决这个问题真让人恼火。。。Glassfish 3.0.1正在尝试与Windows连接,并出现上述错误 我根本不是Windows或LDAP的天才。。。但最终发现: 最后一行是关键:使用“全局编录端口”——默认情况下是3268,而不是389。例外情况消失了 为什么? 谁在乎呢
(好吧,好吧,我现在就来读一下。)试图解决这个问题真让人恼火。。。Glassfish 3.0.1正在尝试与Windows连接,并出现上述错误 我根本不是Windows或LDAP的天才。。。但最终发现: 最后一行是关键:使用“全局编录端口”——默认情况下是3268,而不是389。例外情况消失了 为什么? 谁在乎呢
(好吧,我现在就来读一下。)这是我在domain.xml文件中使用的配置,可能对您有一些影响:
<auth-realm classname="com.sun.enterprise.security.auth.realm.ldap.LDAPRealm" name="ldapRealm">
<property name="search-bind-password" value="Demodemo01"/>
<property name="search-bind-dn" value="Administrator"/>
<property name="search-filter" value="(&(objectClass=user)(sAMAccountName=%s)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"/>
<property name="group-search-filter" value="(&(objectClass=group)(member=%d))"/>
<property name="jaas-context" value="ldapRealm"/>
<property name="base-dn" value="CN=Users,DC=saierp,DC=net"/>
<property name="directory" value="ldap://192.168.1.38:389"/>
</auth-realm>
特别是,请确保将
userAccountControl
添加到您的筛选器中,否则,AD中已禁用的帐户将被允许连接。这是我在我的domain.xml文件中使用的配置,它可能对您有一些影响:
<auth-realm classname="com.sun.enterprise.security.auth.realm.ldap.LDAPRealm" name="ldapRealm">
<property name="search-bind-password" value="Demodemo01"/>
<property name="search-bind-dn" value="Administrator"/>
<property name="search-filter" value="(&(objectClass=user)(sAMAccountName=%s)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"/>
<property name="group-search-filter" value="(&(objectClass=group)(member=%d))"/>
<property name="jaas-context" value="ldapRealm"/>
<property name="base-dn" value="CN=Users,DC=saierp,DC=net"/>
<property name="directory" value="ldap://192.168.1.38:389"/>
</auth-realm>
特别是,请确保将userAccountControl
添加到您的筛选器中,否则,将允许AD中禁用的帐户进行连接