Вы нет. Spring Security поставляется с интерфейсом UserDetailsContextMapper
/**
* Creates a fully populated UserDetails object for use by the security framework.
*
* @param ctx the context object which contains the user information.
* @param username the user's supplied login name.
* @param authorities
* @return the user object.
*/
UserDetails mapUserFromContext(DirContextOperations ctx, String username,
Collection<? extends GrantedAuthority> authorities);
Реализация по умолчанию, LdapUserDetailsMapper
В настоящее время отображаются только группы, возвращенные поиском.
// Map the roles
for (int i = 0; (this.roleAttributes != null)
&& (i < this.roleAttributes.length); i++) {
String[] rolesForAttribute = ctx.getStringAttributes(this.roleAttributes[i]);
if (rolesForAttribute == null) {
this.logger.debug("Couldn't read role attribute '"
+ this.roleAttributes[i] + "' for user " + dn);
continue;
}
for (String role : rolesForAttribute) {
GrantedAuthority authority = createAuthority(role);
if (authority != null) {
essence.addAuthority(authority);
}
}
}
Однако, реализовав свой собственный UserDetailsMapper , вы можете получить любые записи, которые возвращаются из LDAP.
Вы просто решаете, какой атрибут вы хотите получить
Object attribute = ctx.getObjectAttribute("some-ldap-attribute");
Это способ извлечения пользовательских значений во время события аутентификации.
Если вы хотите просто запрашивать, искать и извлекать данные из каталога LDAP, вы можете использовать SpringSecurityLdapTemplate
Он имитирует то, что RestTemplate делает для HTTP, но для LDAP.