34

配置 Tomcat 5.5 或更高版本以对来自 Windows Active Directory 的用户进行身份验证的最佳方法是什么?

4

4 回答 4

25

来自www.jspwiki.org

请参阅:ActiveDirectoryIntegration

使用您的 ldap-settings 在 server.xml 中尝试此操作:

<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
    connectionURL="ldap://youradsserver:389"
    alternateURL="ldap://youradsserver:389"         
    userRoleName="member"
    userBase="cn=Users,dc=yourdomain"
    userPattern="cn={0},cn=Users,dc=yourdomain"
    roleBase="cn=Users,dc=yourdomain"
    roleName="cn"
    roleSearch="(member={0})"
    roleSubtree="false"
    userSubtree="true"/>

并在你的应用程序的tomcat-users.xml和web.xml中定义角色

编辑webapp_root/WEB_INF/Web.xml文件如下:

<security-constraint>
   <display-name>your web app display name</display-name>
   <web-resource-collection>
     <web-resource-name>Protected Area</web-resource-name>
     <url-pattern>*.jsp</url-pattern>
     <url-pattern>*.html</url-pattern>
     <url-pattern>*.xml</url-pattern>
   </web-resource-collection>
   <auth-constraint>
     <role-name>yourrolname(ADS Group)</role-name>
   </auth-constraint>
 </security-constraint>
 <login-config>
   <auth-method>FORM</auth-method>
   <form-login-config>
     <form-login-page>/login.jsp</form-login-page>
     <form-error-page>/error.jsp</form-error-page>
   </form-login-config>
 </login-config>
 <security-role>
   <description>your role description</description>
   <role-name>yourrolename(i.e ADS group)</role-name>
 </security-role>
于 2008-11-06T08:03:10.637 回答
19

Blauhr 的回答很好,但是CN用户的身份AD是基于他们的“显示名称”,而不是他们的saMAccountName(用户习惯于登录)。根据他的解决方案,看起来有人必须使用他们的显示名称登录,基于userPattern.

我个人使用过以下内容:

<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
    connectionURL="ldap://DOMAIN_CONTROLLER:389"
    connectionName="USERID@DOMAIN.com"
    connectionPassword="USER_PASSWORD"
    referrals="follow"
    userBase="OU=USER_GROUP,DC=DOMAIN,DC=com"
    userSearch="(sAMAccountName={0})"
    userSubtree="true"
    roleBase="OU=GROUPS_GROUP,DC=DOMAIN,DC=com"
    roleName="name"
    roleSubtree="true"
    roleSearch="(member={0})"/>

其他一切几乎都一样。

于 2011-05-02T18:25:00.773 回答
2

基于 LDAP 的身份验证无需任何额外步骤即可在任何操作系统上运行。

http://spnego.sf.net可用于对登录到 Windows 域的用户进行静默身份验证。这需要在域中注册的域帐户对所提供的服务具有权威性。它适用于 Windows 和 Linux。

于 2009-12-14T09:08:08.770 回答
0

“欢迎来到 SPNEGO SourceForge 项目 Integrated Windows Authentication in Java

该项目的目的是提供一个替代库(.jar 文件),应用程序服务器(如 Tomcat)可以将其用作验证客户端(如 Web 浏览器)的方法。

如果您的组织正在运行 Active Directory (AD),并且您的所有 Web 应用程序都通过 Microsoft 的 Internet 信息服务 (IIS),并且 IIS 启用了集成 Windows 身份验证,并且您组织中的每个人都在使用 Internet Explorer (IE),那么这个项目可能对你没有任何兴趣。”

于 2010-11-19T10:39:05.950 回答