想法是通过配置我的Tomcat 6容器来执行身份验证(使用用户名+密码的基本表单),以便将它(使用JNDI Realm)连接到Microsoft Active Directory检查凭证是否正确。对Microsoft Active Directory的Java JNDI查找(使用Tomcat 6),身份验证失败
我发现了很多关于这个主题的文档,但是我没有正确地配置Realm,我相信。
这是我在Oracle的网站上找到的文档(这恰好是因为Tomcat 4的一样)http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html#JNDIRealm
找到该Oracle文档相当差,但在其他网站来像这样一个http://www.jspwiki.org/wiki/ActiveDirectoryIntegration其关于这个问题的复杂的。
但是多次尝试后,我仍然无法成功验证:
- 当我启动Tomcat,似乎一切都很好,没有任何警告或任何其他错误信息出现。
- 当我尝试进行身份验证时,我一直重定向到我的错误页面。并没有警告或任何其他消息出现。
这些是境界CONFIGS的2我试图
<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.
我改变了uid =在我的userPattern与cn =但没有运气。 roleSearch字段是强制性的吗? –
我添加了第二个Realm配置测试,在我的问题上面也失败了。还是行不通。任何想法? –
我对JNDI一无所知 - 只是从AD的角度出发。到目前为止,解决这个问题的最佳方法是获取网络捕获并在WireShark中打开它。您将能够准确查看发送给AD的内容并相应调整。我可以在此基础上提供帮助。 –