Я создал сервер авторизации OAuth2, настроенный следующим образом:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
...
}
Я также создал сервер ресурсов, который работает как отдельное приложение.
Я хотел быполучить информацию о пользователе на сервере ресурсов с сервера авторизации.Я использую токены JWT и могу добавить в него детали аутентификации.Однако я хотел бы получить конфиденциальную информацию о пользователях.Итак, я хочу добавить возможность сервера ресурсов в мой сервер аутентификации.
Я создал:
@Configuration
@EnableResourceServer
public class OAuth2ResourceServerConfig extends
ResourceServerConfigurerAdapter {
...
}
Я создал контроллер как:
@GetMapping("/user")
public Map<String, String> user(Principal principal) {
if (principal != null) {
OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) principal;
Authentication authentication = oAuth2Authentication.getUserAuthentication();
return (Map<String, String>) authentication.getDetails();
}
return null;
}
Всякий раз, когда я хочу изменить разрешения ресурса в конфигурации ресурса:
@Override
public void configure(HttpSecurity httpSecurity) throws Exception {
...
}
это не работает.Только WebSecurityConfig
распознается.Я пытался изменить @Order
, но не сработало.WebSecurityConfig выдает ошибку при таком сопоставлении муравьев:
.antMatchers("/user").access("#oauth2.hasScope('read')")
Я добавил расширение GlobalMethodSecurityConfiguration
, но ничего не решил.
1) Правильно ли архитектурно корректно информация пользователя на сервере вСервер авторизации?
2) Есть ли в моем случае вариант использования security.oauth2.resource.user-info-uri
?
3) Как добавить возможность сервера ресурсов в мой сервер авторизации?