2011-08-17 39 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>

它幫助我。