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="(&(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="(&(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="(&(objectClass=person)(cn=0))"
userSubtree="true" />
【讨论】:
以上是关于Tomcat - OpenLDAP 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
LDAP 用户尝试进行身份验证得到错误 50 访问不足 (openldap)