2

我想对希望通过 Active Directory 访问特定资源的用户进行身份验证。我使用 JSF 2.1 和 Glassfish 3.1.2。我试试 这个这个这个,但它对我不起作用。用户无法登录。始终将我重定向到错误页面。

domain.xml 片段:

<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="(&amp;(objectClass=user)(sAMAccountName=%s))"></property>
      <property name="base-dn" value="DC=my,DC=com"></property>
      <property name="group-search-filter" value="(&amp;(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 片段:

<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 片段:

<security-role-mapping>
    <role-name>user</role-name>
    <group-name>Domain Users</group-name>
</security-role-mapping>

我还添加-Djava.naming.referral=follow了 JVM 选项。

  1. 如果可能的话,我在哪里可以检查任何异常或错误等“连接到服务器失败”或“密码或登录错误”?有日志文件吗?或者是其他东西?
  2. 我错过了配置文件中的某些内容吗?
4

1 回答 1

1

解决。

将属性添加java.naming.referral=follow到 domain.xml。

于 2012-11-01T17:34:03.143 回答