使用LDAP域配置Tomcat 8

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用LDAP域配置Tomcat 8相关的知识,希望对你有一定的参考价值。

我在Tomcat 8上配置LDAP服务器时遇到问题。我已配置LDAP服务器并在WAS 8.5服务器上工作,我想在Tomcat上配置相同的LDAP。 WAS配置是(从意大利语翻译):

  • 用户过滤器:(&(cn =%v)(objectclass = inetOrgPerson))
  • 组过滤器:(&(cn =%v)(|(objectclass = groupOfNames)(objectclass = groupOfUniqueNames)))
  • 用户ID地图:*:cn
  • 组ID映射:*:cn
  • 组的映射ID成员:ibm-allGroups:member; ibm-allGroups:uniqueMember; groupOfNames:member; groupOfUniqueNames:uniqueMember

tomcat上server.xml中的Realm标记是:

<Realm className="org.apache.catalina.realm.JNDIRealm" debug="10"
                            connectionURL="ldap://192.168.0.3:389"
                            userBase="o=organization,c=it"
                            userSearch="(cn={0})"
                            userSubtree="true"
                            connectionName="cn=test,cn=Directory Administrators,o=organization,c=it"
                            connectionPassword="testpass"                          
            />

如何使用角色属性填充Realm标记?在web.xml中,我必须指定什么角色?我只想授予所有经过身份验证的用户的访问权限。

答案

我认为您已经通过上述设置对用户进行身份验证了。

角色

对于角色/组,您可以按如下方式翻译WAS设置:

<...your config...
 roleBase="o=organization,c=it"
 roleSubtree="true"
 roleSearch="(&(uniqueMember={0})(|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames)))" 
 roleName="cn"/>

然后,在Tomcat中分配用户的角色将是目录中的组名列表。由于这可能会有所不同,您需要预先设置一些列在web.xml中的组。将这些组分配给用户将为他们提供适当的访问权限。

认证用户

如果您只想允许任何经过身份验证的用户,可以将属性allRolesMode设置为authOnly,如下所示:

<...your config...
 allRolesMode="authOnly"/>

然后,您的web.xml应该使用*作为角色规范,如下所示:

<auth-constraint>
    <role-name>*</role-name>
</auth-constraint>

也许您还应该设置security-role元素,如下所示:Tomcat security constraint for valid user

我个人没有使用authOnly的设置但我知道它可以完成并且已经看到它在行动。

以上是关于使用LDAP域配置Tomcat 8的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 8 - LDAP:NameNotFoundException 错误代码 32,剩余名称为空字符串

从零构建ipa-server.实现ldap+kerberos域用户验证(开放防火墙,命令版)

Phabricator 开放源代码的软件开发平台 Window Active Directory ldap ad域配置记录

windows下配置openldap,manager的连接:LDAP error:无效的凭据

Zeppelin 0.8.0 ldap 组和角色配置

Gitlab加入LDAP认证