这里有一些关于这个主题的问题,但没有一个答案有帮助或线程似乎已经死了......所以这里又有另一个:
我正在尝试通过ActiveDirectory Server处理我的webapps的身份验证。 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,OU=@ServiceAccounts,DC=ad,DC=local"></property>
</auth-realm>
此外,此JVM-Option已设置(如许多教程中所述):
<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也是如此:登录框出现了。我输入了有效的用户名和相应的密码......窗口再次出现。
日志显示原始连接和普通用户查找有效,但组查找失败,其中一个(可能是两个)异常:
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 :(得分:0)
添加到<auth-realm>
属性
<property name="java.naming.referral" value="follow"></property>
它帮助了我。