У меня есть Springboot, успешно проходящий аутентификацию на LDAP и добавляющий в представление модель CustomUserDetails
.
Во время события аутентификации я также хотел бы вернуть дополнительные сведения, такие как электронная почта, телефон и город.
В соответствии с этим SO ответом это возможно, и я думаю, this также обращается к нему.
Несмотря на прочтение обоих этих ответов, я все еще не уверен, как поступитьсделать это - особенно о том, как соотносятся шаги 2 и 3 из второго ответа, и где отображаются такие данные, как электронная почта, город и телефон?
Мой класс безопасности:
Безопасность
@SpringBootApplication
public class ApplicationSecurity extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
public void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.formLogin()
.defaultSuccessUrl("/newExhibit");
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(userDetailsService)
.and()
.ldapAuthentication()
.userDnPatterns("uid={0},ou=people")
.groupSearchBase("ou=groups")
.contextSource()
.url("ldap://localhost:8389/dc=springframework,dc=org")
.and()
.passwordCompare()
.passwordEncoder(passwordEncoder())
.passwordAttribute("userPassword");
}
Мой пользовательский объект из test-server.ldif
dn: uid=abc123,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Tom Smith
sn: Smith
uid: abc123
userPassword: pass
mail: tom@contoso.com
mobile: +212 307 12345
st: CA
После этого ответа мне нужно добавить в auth
(a) contextxtsource и
(b) userDetailsContextMapper?
В конечном итоге эти подробности из ldap я хотел бы сопоставить с моим классом пользователя java.
UPDATE
Обновленный AuthenticationManagerBUilder
@SpringBootApplication
public class ApplicationSecurity extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(userDetailsService)
.and()
.ldapAuthentication()
.userDnPatterns("uid={0},ou=people")
.groupSearchBase("ou=groups")
.contextSource()
.userDetailsContextMapper(???) // what object in here and how initalised
.url("ldap://localhost:8389/dc=springframework,dc=org")
.and()
.passwordCompare()
.passwordEncoder(passwordEncoder())
.passwordAttribute("userPassword");
}