Поиск Java JNDI в Microsoft Active Directory (с использованием Tomcat 6), ошибка аутентификации - PullRequest
1 голос
/ 27 сентября 2011

Идея состоит в том, чтобы выполнить аутентификацию (базовую форму с именем пользователя + паролем), настроив мой контейнер Tomcat 6 так, чтобы он подключался (используя JNDI Realm) к Microsoft Active Directory для проверки правильности учетных данных.

Я нашел довольно много документации по этому вопросу, но мне не удается правильно настроить Realm.

Это документация, которую я нашел на веб-сайте Oracle (которая совпадает с Tomcat 4) http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html#JNDIRealm

Нашел этот документ Oracle довольно скудным, но наткнулся на другие сайты, такие как этот http://www.jspwiki.org/wiki/ActiveDirectoryIntegration, которые подробно обсуждают эту тему.

Однако после многих попыток я все еще не могу успешно пройти аутентификацию:

  1. Когда я запускаю Tomcat, все выглядит нормально, не появляется ПРЕДУПРЕЖДЕНИЕ или любое другое сообщение об ошибке.
  2. Когда я пытаюсь пройти аутентификацию, я последовательно перенаправляюсь на свою страницу ошибки.И не появляется ПРЕДУПРЕЖДЕНИЕ или какое-либо другое сообщение.

Это 2 из конфигураций Realm, которые я пробовал

<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
   connectionName="test"
   connectionPassword="test"
   connectionURL="LDAP://subDomain.myDomain.co.uk:389"
   userPattern="uid={0},ou=London,dc=subDomain,dc=myDomain,dc=co,dc=uk"
   roleBase="ou=London,dc=subDomain,dc=myDomain,dc=co,dc=uk"
   roleName="cn"
   roleSearch="memberUid={1}"
/>

<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
  connectionName="test"
  connectionPassword="test"
  connectionURL="LDAP://subDomain.myDomain.co.uk:389"
  userBase="ou=London,dc=subDomain,dc=myDomain,dc=co,dc=uk"
  userSearch="(sAMAccountName={0})"
  roleBase="ou=Groups,dc=subDomain,dc=myDomain,dc=co,dc=uk"
  roleName="cn"
  roleSubtree="true"
  roleSearch="(member={0})"
/>

Я проверил учетные данные подключения с помощью браузера LDAP, и они в порядке.

Это мой web.xml

<web-app>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <security-constraint>
    <display-name>Example Security Constraint</display-name>
    <web-resource-collection>
        <web-resource-name>Protected Pages</web-resource-name>
        <url-pattern>/protected/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>London</role-name>
    </auth-constraint>
  </security-constraint>

  <!-- Default a login configuration that uses form-based authentication -->
  <login-config>
    <auth-method>FORM</auth-method>
    <realm-name>DBRealm</realm-name>
    <form-login-config>
        <form-login-page>/WEB-INF/login.jsp</form-login-page>
        <form-error-page>/WEB-INF/error.jsp</form-error-page>
    </form-login-config>
  </login-config>

  <!-- Define a logical role for this application, needs to be mapped to an actual role at deployment time -->
  <security-role>
    <description>All Users</description>
    <role-name>London</role-name>
  </security-role>
</web-app>

Заранее спасибо, A.

1 Ответ

0 голосов
/ 28 сентября 2011

Используете ли вы атрибуты uid или memberUid в AD?Это нетипично.

Возможно, вы захотите заменить uid= в вашем userPattern на cn=.

Для roleSearch это, вероятно, на самом деле должно быть member=.

...