В соответствии с настройками безопасности thymeleaf страница Я могу получить зарегистрированное имя пользователя и роли, как показано ниже:
Logged user: <span sec:authentication="name">Bob</span>
Roles: <span sec:authentication="principal.authorities">[ROLE_USER, ROLE_ADMIN]</span>
У меня есть веб-приложение, в котором аутентификация выполняется через активный каталог с использованием ActiveDirectoryLdapAuthenticationProvider
как показано ниже:
@Bean
@Override
public AuthenticationManager authenticationManager() {
return new ProviderManager(Arrays.asList(activeDirectoryLdapAuthenticationProvider()));
}
@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(adDomain,
adUrl);
provider.setConvertSubErrorCodesToExceptions(true);
provider.setUseAuthenticationRequestCredentials(true);
return provider;
}
Затем, после того как пользователь вошел в систему, у меня есть страница заголовка, которую я использую на всех своих страницах с указанным выше тегом sec:authentication="name"
thymeleaf, чтобы показать имя пользователя, но я хотел посмотреть, есть ли вместо этого можно показать полное имя.
Предлагаемое решение здесь у меня не работает:
Я использую: thymeleaf-extras-springsecurity5
и используя: <span th:text ="${#authentication.getPrincipal().getUser().getFirstName()}"></span>
Дает мне: Method getUser() cannot be found on type org.springframework.security.ldap.userdetails.LdapUserDetailsImpl
Кажется, эта информация взята из: org.springframework.security.ldap.userdetails.LdapUserDetailsImpl
, и есть только несколько вариантов, таких как имя пользователя, но не остальная часть информации, которую может иметь AD.