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=followJVMオプションにも追加しました。

  1. 可能であれば、「サーバーへの接続に失敗しました」または「パスワードまたはログインが正しくありません」という例外やエラーなどをどこで確認できますか? ログファイルはありますか? または、他の何か?
  2. 構成ファイルに何かがありませんでしたか?
4

1 に答える 1

1

解決しました。

java.naming.referral=followプロパティを domain.xmlに追加します。

于 2012-11-01T17:34:03.143 に答える