我有一个使用LDAP配置的应用程序,它运行得很好。但现在我需要提取用户经理的详细信息。我无法获得详细信息,请查看详细信息
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws
Exception {
auth
.ldapAuthentication()
.userSearchBase("dc=ab,dc=test,dc=com")
.userSearchFilter("TestName={0}")
.groupSearchBase("ou=Groups,dc=ab,dc=test,dc=com")
.groupSearchFilter("member={1}")
.groupRoleAttribute("cn")
.userDetailsContextMapper(userContextMapper())
.contextSource(contextSource());
}
@Bean
public LdapContextSource contextSource() {
LdapContextSource contextSource= new LdapContextSource();
contextSource.setUrl("ldap:test");
contextSource.setUserDn("CN=,OU=Accounts,DC=ab,DC=test,DC=com");
contextSource.setPassword();
return contextSource;
}
@Bean
public InetOrgPersonContextMapper userContextMapper() {
return new InetOrgPersonContextMapper();
}
我可以获取用户,但我需要用户管理员详细信息。
答案 0 :(得分:0)
尝试一下,您可以从InetOrgPerson类获取所有经过身份验证的用户详细信息!由于您的bean userContextMapper的实现。
public void printDetails() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
InetOrgPerson person = (InetOrgPerson)(authentication.getPrincipal());
System.out.println(person.getUsername());
System.out.println(person.getGivenName());
System.out.println(person.getHomePhone());
}
// various methods are implemented in the inetOrgPerson class to getting more ldap informations