使用LDAP领域配置Tomcat 8

时间:2018-09-13 20:54:45

标签: authentication tomcat ldap jdbcrealm

我在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中,我必须指定什么角色?我只想授予所有经过身份验证的用户访问权限。

1 个答案:

答案 0 :(得分:1)

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

角色

对于角色/组,您可以按以下方式转换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的设置,但是我知道它可以完成并且已经在实际中使用。