如何使用Spring Security with LDAP获取用户信息

时间:2013-04-24 05:30:39

标签: spring authentication spring-security ldap

我使用Spring 3.1.1和Spring Security 3.2.0以及LDAP authencitation。 我已经达到了一个正常的点,我可以使用我的LDAP用户名和密码登录,我甚至可以用这个显示用户名

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

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

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

请帮助!!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

How do I use a custom authorities populator with Spring Security and the ActiveDirectoryLdapAuthenticationProvider?

如果您没有使用Active Directory,则只需扩展LdapAuthenticationProvider类并覆盖loadUserAuthorities方法,您可以在该方法中根据用户的LDAP属性捕获相关用户信息:

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

//etc.

您可以将这些存储在任何地方或任何您喜欢的地方,并且您仅限于通过LDAP提供的属性。然后,你必须在适当的bean中指定你的LdapAuthoritiesProvider(ldapAuthoritiesPopulator,如果内存服务)。

相信以上内容适用于非AD LDAP,但您显然需要对其进行测试才能确定。如果你还没有使用它,我推荐LDAP browser for Eclipse provided by Apache Studios