我正在努力在我的项目中实施 Spring Security。我需要使用 Spring Security 从证书 CN 中提取的用户名作为uid
LDAP 服务器上的用户名。我不确定解决这个问题的正确方法。我不确定如何将 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>