【发布时间】:2012-10-30 22:07:47
【问题描述】:
我想对希望通过 Active Directory 访问特定资源的用户进行身份验证。我使用 JSF 2.1 和 Glassfish 3.1.2。 我尝试this、this、this,但它对我不起作用。用户无法登录。总是将我重定向到错误页面。
domain.xml sn-p:
<auth-realm name="ADREALM" classname="com.sun.enterprise.security.auth.realm.ldap.LDAPRealm">
<property name="directory" value="LDAP://WIN-AK5HJBX4R4G.my.com/"></property>
<property name="search-filter" value="(&(objectClass=user)(sAMAccountName=%s))"></property>
<property name="base-dn" value="DC=my,DC=com"></property>
<property name="group-search-filter" value="(&(objectClass=group)(member=%d))"></property>
<property name="jaas-context" value="ldapRealm"></property>
<property name="assign-groups" value="Domain Users"></property>
<property name="search-bind-dn" value="WIN-AK5HJBX4R4G.my.com\Administrator"></property>
<property name="search-bind-password" value="Qwerty123"></property>
</auth-realm>
WIN-AK5HJBX4R4G - 它是我的虚拟服务器的默认名称(它可以是 192.168.56.101 或只是 localhost。因为 webapp 部署在此服务器上并不意味着它的命名方式,AD 也在此服务器上) .
我尝试了一些形式的 search-bind-dn,例如:
WIN-AK5HJBX4R4G.my.com\Administrator <- it works for asp.net so I think it is good form , maybe I'm wrong?
Administrator@my.com
CN=Administrator,CN=Users,DC=my,DC=com
没有任何作用。用户仍然无法登录。
web.xml sn-p:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>ADREALM</realm-name>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/loginError.xhtml</form-error-page>
</form-login-config>
</login-config>
<security-constraint>
<display-name>Example Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Pages</web-resource-name>
<url-pattern>/faces/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<description>A Funky User</description>
<role-name>user</role-name>
</security-role>
glassfish-web.xml sn-p:
<security-role-mapping>
<role-name>user</role-name>
<group-name>Domain Users</group-name>
</security-role-mapping>
我还在 JVM 选项中添加了-Djava.naming.referral=follow。
- 如果可能,我在哪里可以检查任何异常或错误等“连接到服务器失败”或“密码或登录错误”?有日志文件吗?还是别的什么?
- 我是否遗漏了配置文件中的某些内容?
【问题讨论】:
标签: active-directory glassfish forms-authentication realm