【问题标题】:Configuring Tomcat to authenticate using Windows Active Directory配置 Tomcat 以使用 Windows Active Directory 进行身份验证
【发布时间】:2008-11-06 07:37:26
【问题描述】:

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

【问题讨论】:

    标签: tomcat ldap


    【解决方案1】:

    来自www.jspwiki.org

    见:ActiveDirectoryIntegration

    在 server.xml 中使用您的 ldap-settings 试试这个:

    <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>
    

    【讨论】:

    • 到 www.jspwiki.org 的新链接(感谢 Antonio)
    • 由于 context.xml 中没有指定连接用户名或密码,这似乎只有在允许匿名查找获取角色列表时才有效。
    • 链接又变了。我不能 100% 确定,因为我没有看到最初链接的页面,但现在可能是 somewhere on here
    • 这里有关于各个 XML 标签的文档吗?我想通过浏览器触发身份验证,而不是通过登录表单。
    【解决方案2】:

    Blauhr 的回答很好,但AD 中用户的CN 是基于他们的“显示名称”,而不是他们的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})"/>
    

    其他一切都差不多。

    【讨论】:

    • 嗨@Doug 你有没有遇到登录时间太长的问题?
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      “欢迎来到 SPNEGO SourceForge 项目 Java 中的集成 Windows 身份验证

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-03
        • 2017-12-29
        • 1970-01-01
        • 1970-01-01
        • 2016-05-12
        • 2018-11-10
        • 1970-01-01
        相关资源
        最近更新 更多