0

我将 Spring 3.1.1 与 Spring Security 3.2.0 与 LDAP 身份验证一起使用。我已经达到了可以正常工作的程度,我可以使用我的 LDAP 用户名和密码登录,我什至可以用这个显示用户名

<security:authentication property="principal.username" />, is currently logged in.

如果可能的话,我想知道如何获取名字、姓氏、电子邮件地址或存储在我的 LDAP 凭据中的其他信息。

我试过property="credentials"了,但这返回null ...

请帮忙!!

4

2 回答 2

2

实现您自己的 UserDetailsContextMapper 并将 LDAP 用户属性加载到 UserDetails 对象中

http://docs.spring.io/spring-security/site/docs/3.2.x/reference/htmlsingle/#ldap-custom-user-details

于 2013-04-24T06:40:39.427 回答
2

这与我几天前的问题非常相似:

如何将自定义权限填充器与 Spring Security 和 ActiveDirectoryLdapAuthenticationProvider 一起使用?

如果您不使用 Active Directory,您可以简单地扩展LdapAuthenticationProvider该类并覆盖该loadUserAuthorities方法,您可以在其中根据用户的 LDAP 属性捕获相关的用户信息:

String firstName = userData.getStringAttribute("givenName");
String lastName = userData.getStringAttribute("sn");

//etc.

您可以将这些存储在您喜欢的任何位置或任何位置,并且您仅限于通过 LDAP 提供的属性。然后,您必须在适当的 bean 中指定您的 LdapAuthoritiesProvider(如果有记忆,则为 ldapAuthoritiesPopulator)。

相信以上内容适用于非 AD LDAP,但您显然需要对其进行测试才能确定。如果您还没有使用它,我推荐Apache Studios 提供的 Eclipse LDAP 浏览器。

于 2013-04-24T18:12:24.263 回答