我正在使用spring boot在ldap上执行我的第一步。我已成功验证我的ldif文件中列出的用户:
dn: dc=parascus,dc=de
objectclass: top
objectclass: domain
objectclass: extensibleObject
dc: parascus
dn: ou=groups,dc=parascus,dc=de
objectclass: top
objectclass: organizationalUnit
ou: groups
dn: ou=people,dc=parascus,dc=de
objectclass: top
objectclass: organizationalUnit
ou: people
dn: uid=jsmith,ou=people,dc=parascus,dc=de
objectclass: top
objectclass: person
objectclass: inetOrgPerson
cn: Smith, John
sn: Smith
uid: jsmith
userPassword: scrambled
dn: cn=developers,ou=groups,dc=parascus,dc=de
objectclass: top
objectclass: groupOfUniqueNames
cn: developers
ou: developer
uniqueMember: uid=jsmith,ou=people,dc=parascus,dc=de
现在,我使用控制器方法并尝试获取cn属性“smith,john”:
@GetMapping("/profile")
public String index(Authentication authentication) {
return "Profile of " + authentication.getName();
}
但我只得到uid“jsmith”。有谁能给我一个提示,我如何才能得到所有的信息或最终的cn条目?
问候
副肌
1条答案
按热度按时间mm5n2pyu1#
您需要提供一个
UserDetailsContextMapper
告诉spring security如何从DirContext
.您在暴露对象时执行此操作
LdapAuthenticationProvider
:SpringSecurity附带了两个内置的上下文Map器,其中一个用于
person
模式(PersonContextMapper
)另一个是给inetOrgPerson
模式(InetOrgPersonContextMapper
).使用上述配置,您可以执行以下任一操作:
或
如果您的条目既不使用
person
也不是inetOrgPerson
模式,您可以创建自己的模式UserDetailsContextMapper
.