2011-08-17 55 views
0

已经有关于这个话题在这里的一些问题,但没有答案的帮助或线程似乎已经死了...所以这里去另一个问题: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="(&amp;(objectCategory=person)(objectClass=user)(sAMAccountName=%s))"></property> 
    <property name="search-bind-password" value="topsecret"></property> 
    <property name="group-search-filter" value="(&amp;(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*)))不会返回任何结果...并且我无法获得有关此查询应该执行的操作的任何信息。

我希望有人在那里有一个关于这里发生了什么问题的想法。自从我今天早上上班以来,这个人一直在殴打我(现在已经是傍晚了......)。

在此先感谢! 本

回答

0

添加到<auth-realm> 财产 <property name="java.naming.referral" value="follow"></property>

它帮助我。