Я использую Spring-Boot и Spring Security с входом OAuth2 от третьей стороны.
У поставщика единого входа есть конечная точка маркера доступа, которая возвращает следующее JSON
{
"access_token": "CGjok",
"refresh_token": "TSHO6E",
"scope": "openid profile ",
"id_token": "eyJ0eXAiOiJKV1QiLCg",
"token_type": "Bearer",
"expires_in": 7199,
"nonce": "ImplicitFlowTest"
}
Имя входа работает с аннотацией @ EnableOAuth2Sso следующим образом:
@EnableOAuth2Sso
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/restapi/**").hasAuthority("Mitarbeiter")
.antMatchers("/login", "/static/**", "/", "/actuator/prometheus","/error**","/logout").permitAll()
.and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).invalidateHttpSession(true)
.deleteCookies("SMSESSION", "JSESSIONID", "XSRF-TOKEN").logoutSuccessUrl("/");
http
// CSRF Token
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
}
Мы можем выйти из приложения, но мы также хотим отправить запрос на сервер авторизации. Для этого мне нужно получить доступ к конечной точке информации токена.
В моих контроллерах я вижу, что Принципал получает правильную информацию от конечной точки пользователя, но где в Spring Boot хранится информация от конечной точки accessToken. Я нашел класс OAuth2AccessToken, но не могу понять, как его читать в Spring Controller. Я могу получить доступ к OAuth2Authentication, приведя Принципала, как ожидалось.
Сервер авторизации единого входа имеет следующую конечную точку, которую мне нужно вызвать:
/oauth2/connect/endSession?id_token_hint=<oidc-token>&post_logout_redirect_uri=<post-logout-redirect-uri>
Ссылка на значение в JSON от конечной точки маркера доступа. Как я могу получить доступ к этим значениям при моей настройке?