Tomcat - OpenLDAP 身份验证

Posted

技术标签:

【中文标题】Tomcat - OpenLDAP 身份验证【英文标题】:Tomcat - OpenLDAP authentication 【发布时间】:2021-10-09 16:21:53 【问题描述】:

Tomcat 8 server.xml 中使用 OpenLDAP 进行身份验证所需的领域配置是什么?

<-- Active Directory, Working Fine-->
<Realm adCompat="true" alternateURL="ldap://a.b.c.d:3268"
      className="org.apache.catalina.realm.JNDIRealm" commonRole="CommonRole"
      connectionName="CN=admin,DC=test,DC=com"
      connectionPassword="test_password" connectionURL="ldap://a.b.c.d:3268"
      userBase="DC=test,DC=com" userRoleName="displayName"
      userSearch="(&amp;(objectCategory=user)(sAMAccountName=0))"
      userSubtree="true" />

<!-- OpenLDAP, Not Working -->
<Realm alternateURL="ldap://a.b.c.d:4689"
      className="org.apache.catalina.realm.JNDIRealm" commonRole="CommonRole"
      connectionName="cn=admin,dc=test,dc=com"
      connectionPassword="test_password" connectionURL="ldap://a.b.c.d:4689"
      userBase="dc=test,dc=com" userRoleName="displayName"
      userSearch="(&amp;(objectClass=person)(cn=1))"
      userSubtree="true" />
  
  

【问题讨论】:

你检查official documentation了吗? connectionURL 是唯一需要的属性(当然除了className)。 userSearch 属性使用0 占位符作为用户名,您使用的是1 “不工作”不是问题描述。离题。 【参考方案1】:
I have modified as mentioned by Piotr P. Karwasz and it worked. Thanks a lot!
The userSearch attribute uses a 0 placeholder for the username, you used 1.
  
  <Realm alternateURL="ldap://a.b.c.d:4689"
                 className="org.apache.catalina.realm.JNDIRealm" commonRole="CommonRole"
                 connectionName="cn=admin,dc=test,dc=com"
                 connectionPassword="admin_pass" connectionURL="ldap://a.b.c.d:4689"
                 debug="9" userBase="dc=test,dc=com" userRoleName="displayName"
                 userSearch="(&amp;(objectClass=person)(cn=0))"
                 userSubtree="true" />

【讨论】:

以上是关于Tomcat - OpenLDAP 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

LDAP 用户尝试进行身份验证得到错误 50 访问不足 (openldap)

Cas(用于身份验证)+ OpenLDAP(用于用户名、密码+角色和权限)+ Apache Shiro(用于授权)

使用openLDAP组对不同服务的用户进行身份验证

OpenLDAP 中的动态组问题

MarkLogic LDAP身份验证

通过 Tomcat 的 Spring Boot LDAP 身份验证(预身份验证)