我在 spring-security 中使用 LDAP 身份验证。出于某种原因,我没有 LDAP 服务器,并且我已将其配置spring-security.xml
为使用 LDIF 文件。
我需要添加一个type
为用户调用的自定义属性。所以我创建了一个objectclass
和这里attributetypes
提到的。
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
NameNotFoundException
但是,当我尝试使用某些 REST 调用(受 保护)时,这会失败并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
和 属性呢?