Идея состоит в том, чтобы выполнить аутентификацию (базовую форму с именем пользователя + паролем), настроив мой контейнер 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, которые подробно обсуждают эту тему.
Однако после многих попыток я все еще не могу успешно пройти аутентификацию:
- Когда я запускаю Tomcat, все выглядит нормально, не появляется ПРЕДУПРЕЖДЕНИЕ или любое другое сообщение об ошибке.
- Когда я пытаюсь пройти аутентификацию, я последовательно перенаправляюсь на свою страницу ошибки.И не появляется ПРЕДУПРЕЖДЕНИЕ или какое-либо другое сообщение.
Это 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.