如何将对象类和自定义属性添加到 LDIF 文件?

Posted

技术标签:

【中文标题】如何将对象类和自定义属性添加到 LDIF 文件?【英文标题】:How to add objectclass and custom attribute to LDIF file? 【发布时间】:2014-08-10 03:54:43 【问题描述】:

我在 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: test1@test.com
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 和属性呢?

【问题讨论】:

【参考方案1】:

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

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

另外一个问题,spring即使读取了对象类,也不会从entry中读取新的属性。

【讨论】:

你终于找到解决办法了吗?

以上是关于如何将对象类和自定义属性添加到 LDIF 文件?的主要内容,如果未能解决你的问题,请参考以下文章

伪类和自定义选择器的相对性能是啥?

如何旋转 MySQL 实体-属性-值模式

ldap怎么增加用户的属性,比如url,

需要将 foreach 和自定义属性绑定到同一个 div

如何将 TypeScript 与 withRouter、connect、React.Component 和自定义属性一起使用?

Swift中自定义对象和自定义对象数组的通用属性[重复]