我使用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 ...
请帮助!!
答案 0 :(得分:2)
实现您自己的UserDetailsContextMapper并将LDAP用户属性加载到UserDetails对象
http://docs.spring.io/spring-security/site/docs/3.2.x/reference/htmlsingle/#ldap-custom-user-details
答案 1 :(得分:2)
这与我几天前的问题非常类似:
如果您没有使用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。