Java 将X509值传递给LDAP服务器
我正在致力于在我的项目中实现spring安全性。我需要使用Spring Security从证书CN中提取的用户名作为LDAP服务器上的Java 将X509值传递给LDAP服务器,java,spring,spring-security,ldap,x509,Java,Spring,Spring Security,Ldap,X509,我正在致力于在我的项目中实现spring安全性。我需要使用Spring Security从证书CN中提取的用户名作为LDAP服务器上的uid。我不确定如何正确处理这个问题。我不确定如何将CN值从x509传递到LDAP验证器。以前有人这样做过,或者有什么想法吗 注意:我不需要将整个证书传递给LDAP服务器,因为它们不存储在那里,只有来自CN的用户名 编辑:以下是我的spring安全xml文件中的一些配置: <http> <intercept-url pattern="/*
uid
。我不确定如何正确处理这个问题。我不确定如何将CN值从x509传递到LDAP验证器。以前有人这样做过,或者有什么想法吗
注意:我不需要将整个证书传递给LDAP服务器,因为它们不存储在那里,只有来自CN的用户名
编辑:以下是我的spring安全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>
您应该使用。这是来自Spring安全测试套件的。然后,Spring Security应该自动替换它从证书CN中提取的用户名,以代替LDAP搜索筛选器中的{0}
标记
ldap authentication provider元素用于使用用户名和密码对用户进行身份验证,这不是X.509所需要的,在X.509中,容器对证书的验证被视为执行身份验证
Spring Security的X.509身份验证过滤器需要一个UserDetailsService
来为用户加载信息,因此在配置中需要一个。如前所述,如果只有user service ref
属性,则不需要使用该属性,因此只需添加ldap user service
声明就足够了 您应该使用。这是来自Spring安全测试套件的。然后,Spring Security应该自动替换它从证书CN中提取的用户名,以代替LDAP搜索筛选器中的{0}
标记
ldap authentication provider元素用于使用用户名和密码对用户进行身份验证,这不是X.509所需要的,在X.509中,容器对证书的验证被视为执行身份验证
Spring Security的X.509身份验证过滤器需要一个
UserDetailsService
来为用户加载信息,因此在配置中需要一个。如前所述,如果只有user service ref
属性,则不需要使用该属性,因此只需添加ldap user service
声明就足够了 CN不是UID。您的问题描述有严重错误。也许我应该澄清一下:我有一个正则表达式,我正在提取CN的一部分。那部分无关紧要。相关的部分就是我要问的,如何将我提取的值传递到LDAP服务器。我已经添加了我目前拥有的标签。ThanksA CN不是UID。您的问题描述有严重错误。也许我应该澄清一下:我有一个正则表达式,我正在提取CN的一部分。那部分无关紧要。相关的部分就是我要问的,如何将我提取的值传递到LDAP服务器。我已经添加了我目前拥有的标签。谢谢这帮我把一切都安排好了。我现在在获取用户身份验证时遇到问题。没有显示日志记录,我如何启用它?此外,role prefix=“none”
不起作用,仍然在自定义角色上抛出属性错误。有什么想法吗?请查看任何示例应用程序,了解如何配置日志记录。我不知道“在自定义角色上抛出属性错误”是什么意思。例如,如果我在ldap用户服务下输入role prefix=“none”
并使用自定义角色,例如
我会抛出一个错误,说不支持的配置属性:[user]
。根据文档,将角色设置为“无”,我可以使用自己的自定义角色,但这似乎不起作用。如果删除角色前缀,标准的RoleVoter
将不会使用这些属性(请参阅常见问题解答)。您可以改为使用表达式,并使用access=“hasRole('user')”
这有助于我部署所有内容。我现在在获取用户身份验证时遇到问题。没有显示日志记录,我如何启用它?此外,role prefix=“none”
不起作用,仍然在自定义角色上抛出属性错误。有什么想法吗?请查看任何示例应用程序,了解如何配置日志记录。我不知道“在自定义角色上抛出属性错误”是什么意思。例如,如果我在ldap用户服务下输入role prefix=“none”
并使用自定义角色,例如
我会抛出一个错误,说不支持的配置属性:[user]
。根据文档,将角色设置为“无”,我可以使用自己的自定义角色,但这似乎不起作用。如果删除角色前缀,标准的RoleVoter
将不会使用这些属性(请参阅常见问题解答)。您可以改为使用表达式,并使用access=“hasRole('user')”