У меня есть простое приложение OAuth2.Я начал с создания SecurityConfig, расширяющего WebSecurityConfigurerAdapter и помеченного @ EnableOAuth2Sso.Я также создал API в контроллере, чтобы проверить, работает ли аутентификация.Принципал вставляется в контроллер и дает правильное имя.
Сейчас я пытаюсь добавить некоторые полномочия для принципала, внедрив AuthoritiesExtractor и создав его как бин.Я также сделал то же самое с PrincipalExtractor, чтобы проверить, работает ли он.Ни один из них не вызывается во время выполнения какого-либо запроса из браузера.
Редактировать: На самом деле выполняется только аутентификация с помощью OIDC, и, следовательно, мой клиент и ресурсы находятся в одном приложении.
// Это мой класс конфигурации безопасности.
@Configuration
@EnableOAuth2Sso
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/**")
.authorizeRequests()
.antMatchers("/login**","/error**")
.permitAll()
.anyRequest()
.authenticated();
}
@Bean
public PrincipalExtractor principalExtractor() {
return map -> {
System.out.println("Principal extracted.");
User user = new User();
user.setUsername((String)map.get("username"));
return user;
};
}
@Bean
public AuthoritiesExtractor authoritiesExtractor() {
return new PrismAuthoritiesExtractor();
}
}
// И это мой класс AuthoritiesExtractor, определенный отдельно для проверки работоспособности.
public class PrismAuthoritiesExtractor implements AuthoritiesExtractor {
@Override
public List<GrantedAuthority> extractAuthorities(Map<String, Object> map) {
return AuthorityUtils.commaSeparatedStringToAuthorityList("AUTH1,AUTH2");
}
}