spring - 如何向 LDIF 文件添加对象类和自定义属性?

标签 spring spring-security ldap ldif

我在 spring-security 中使用 LDAP 身份验证。由于某种原因,我没有 LDAP 服务器,但我已将 spring-security.xml 配置为使用 LDIF 文件。

我需要为用户添加一个名为 type 的自定义属性。因此,我创建了一个 objectclass 和一个 attributetypes,如前面提到的 here

LDIF 文件如下所示:

dn: cn=subschemasubentry 
changetype: modify 
add: attributetypes 
attributetypes: ( 1.2.3.4.5.6.7 NAME 'type' DESC 'New attribute definition'  
 EQUALITY caseIgnoreMatch SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' ) 

dn: cn=subschemasubentry
changetype: modify
add: objectClasses
objectClasses: ( 1.2.3.4.56789.1.0.200 NAME 'testUser' 
 SUP ( inetOrgPerson ) STRUCTURAL
 MUST cn 
 MAY type )

dn: ou=users,dc=springframework,dc=org
objectclass: top
objectclass: organizationalUnit
ou: users

dn: uid=testuser1,ou=users,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: testUser
mail: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0c78697f783d4c78697f78226f6361" rel="noreferrer noopener nofollow">[email protected]</a>
cn: Some Name
sn: someName
uid: someId
type: someType
userPassword: pass1

但是,当我尝试使用某些 REST 调用(受 spring-security 保护)时,此操作会失败并出现 NameNotFoundException 并出现以下错误:

LDAP: error code 32 - NO_SUCH_OBJECT: 
...
...
Attempt to search under non-existant entry: ou=users,dc=springframework,dc=org];
nested exception is javax.naming.NameNotFoundException:

如果我删除自定义属性和自定义对象类,并将用户数据更改为objectclass: inetOrgPerson,则效果很好。

如何添加objectclass 和属性?

最佳答案

我试图使用 LDIF 文件中的架构,但这是错误的。我使用 ApacheDS 创建具有自定义属性和自定义对象类的新模式。然后将它们导出到 LDIF。

我将生成的 LDIF 添加到用于 spring-security 的 LDIF 文件中。

另一件事是,即使 spring 读取了对象类,它仍然不会从条目中读取新属性。

关于spring - 如何向 LDIF 文件添加对象类和自定义属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24309505/

相关文章:

Spring 启动 : How to specify the PasswordEncoder?

spring-boot - 如何启用 SAML2 AuthNRequest 签名

security - Grails:Spring Security 插件对于简单的安全性来说是否过于强大

C# LDAP 查询以检索组织单位中的所有用户

java - 如何从 Spring Controller 重定向?

java - 从 Tomcat 9 到客户端的 Websocket 二进制消息拆分为 2 个或更多 tcp 数据包

Spring 4/5 全局 CORS 配置不起作用,因为请求的资源上存在 `No ' Access-Control-Allow-Origin' header

java - 如何将 application.properties 中的值分配给静态变量?

grails - “render as JSON”将JSON显示为文本,而不是按预期将其返回给AJAX调用

php - 如何模拟 php native ldap 函数,如 lda_connect、ldap_get_entries、ldap_search 和 ldap_read