【发布时间】:2013-01-12 11:09:07
【问题描述】:
我正在努力在我的项目中实施 Spring Security。我需要使用 Spring Security 从证书 CN 中提取的用户名作为 LDAP 服务器上的uid。我不确定解决这个问题的正确方法。我不确定如何将 CN 值从 x509 传递到 LDAP 身份验证器。有没有人做过这个或者有什么想法?
注意:我不需要将整个证书传递给 LDAP 服务器,因为它们没有存储在那里,只有来自 CN 的用户名。
编辑:这是我的 spring security xml 文件中的一些配置:
<http>
<intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<anonymous />
<x509 subject-principal-regex="CN=(.*?)," /> <!-- user-service-ref needed? -->
</http>
<ldap-server id="ldapServer" url="ldap://localhost:389/dc=example,dc=com" manager-dn="cn=manager,dc=example,dc=com" manager-password="myPassword" />
<authentication-manager>
<ldap-authentication-provider
user-dn-pattern="uid={0},ou=people"
user-search-filter="(uid={0})"
user-search-base="ou=people,dc=example,dc=com"
group-search-filter="(member={0})"
group-search-base="ou=groups"
group-role-attribute="cn" />
</authentication-manager>
【问题讨论】:
-
CN 不是 UID。您的问题描述存在严重问题。
-
也许我应该澄清一下:我有一个正则表达式,我正在提取 CN 的一部分。那部分无关紧要。相关部分是我要问的,如何将我提取的值传递到 LDAP 服务器。我已经添加到我目前拥有的标签中。谢谢
标签: java spring spring-security ldap x509