已经有关于这个话题在这里的一些问题,但没有答案的帮助或线程似乎已经死了...所以这里去另一个问题:GlassFish的3.1 LDAP的领域通过的ActiveDirectory
我想有通过ActiveDirectory服务器处理我的web应用程序的身份验证。 domain.xml中的境界配置如下:
<auth-realm name="ActiveDirectory" classname="com.sun.enterprise.security.auth.realm.ldap.LDAPRealm">
<property description="null" name="directory" value="ldap://ad.local:389"></property>
<property description="null" name="base-dn" value="DC=ad,DC=local"></property>
<property name="jaas-context" value="ldapRealm"></property>
<property name="assign-groups" value="Users"></property>
<property name="search-filter" value="(&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))"></property>
<property name="search-bind-password" value="topsecret"></property>
<property name="group-search-filter" value="(&(objectCategory=group)(member=%d))"></property>
<property name="search-bind-dn" value="CN=read only,[email protected],DC=ad,DC=local"></property>
</auth-realm>
而且,这种JVM的选项设置(如在许多教程说明):
<jvm-options>-Djava.naming.referral=follow</jvm-options>
web.xml中的应用程序设置这(是的,非常基本):
...
<security-constraint>
<display-name>OnlyAD</display-name>
<web-resource-collection>
<web-resource-name>/SubgroupFacade</web-resource-name>
<description/>
<url-pattern>/SubgroupFacade</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>Users</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>ActiveDirectory</realm-name>
</login-config>
<security-role>
<description/>
<role-name>Users</role-name>
</security-role>
...
启动Glassfish工作正常。访问SubgroupFacade-Servlet也有效:登录框出现。我输入一个有效的用户名和相应的密码,然后...窗口再次出现。
日志显示,该原始连接和纯用户查找工作,但组的查找失败,一个(可能是2)异常:
WARNUNG: SEC1106: Error during LDAP search with filter [(&(objectCategory=group)(member=CN=Someuser Joe,OU=Users,OU=Fizzlecorp,DC=ad,DC=local))].
WARNUNG: SEC1000: Caught exception.
javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'DC=ad,DC=local'
...
WARNUNG: SEC1106: Error during LDAP search with filter [(&(objectclass=groupofuniquenames)(objectclass=*groupofurls*))].
WARNUNG: SEC1000: Caught exception.
javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'DC=ad,DC=local'
...
在外部应用程序运行LDAP查询(为例如一个简单的终端上的ldapsearch)的作品。我确实得到了Joe Someuser的所有团体。但是,第二个查询((&(objectclass=groupofuniquenames)(objectclass=*groupofurls*))
)不会返回任何结果...并且我无法获得有关此查询应该执行的操作的任何信息。
我希望有人在那里有一个关于这里发生了什么问题的想法。自从我今天早上上班以来,这个人一直在殴打我(现在已经是傍晚了......)。
在此先感谢! 本