Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将X509值传递给LDAP服务器_Java_Spring_Spring Security_Ldap_X509 - Fatal编程技术网

Java 将X509值传递给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="/*

我正在致力于在我的项目中实现spring安全性。我需要使用Spring Security从证书CN中提取的用户名作为LDAP服务器上的
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')”