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

时间:2014-06-19 14:48:26

标签: spring spring-security ldap ldif

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

我需要为用户添加一个名为type的自定义属性。所以我创建了一个objectclassattributetypes,如上所述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调用(受NameNotFoundException保护)并出现错误时,spring-security失败了:

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 个答案:

答案 0 :(得分:2)

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

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

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