Я работаю над приложением с Spring Boot 5 и OIDC. Я настроил OIDC с помощью Google, и он отлично работает. Меня перенаправляют для входа в Google, а затем он перенаправляет меня в приложение, создающее новый сеанс. Теперь я пытаюсь использовать Google One-Tap. Он также отлично работает. Когда пользователь нажимает на модальное окно с одним нажатием, чтобы продолжить свою личность Google, я получаю POST с id_token. Что я хочу сделать, так это создать сеанс Spring из этого POST, поскольку он создается, когда пользователь регистрируется в OIDC.
Я думаю, что правильный путь — создать Filter
, расширяющий AbstractAuthenticationProcessingFilter
. Я нашел несколько ссылок здесь и здесь, но у меня нет access_token
при получении POST одним касанием:
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
...
OAuth2AuthenticationToken oauth2Authentication = new OAuth2AuthenticationToken(
authenticationResult.getPrincipal(),
authenticationResult.getAuthorities(),
authenticationResult.getClientRegistration().getRegistrationId());
oauth2Authentication.setDetails(authenticationDetails);
OAuth2AuthorizedClient authorizedClient = new OAuth2AuthorizedClient(
authenticationResult.getClientRegistration(),
oauth2Authentication.getName(),
authenticationResult.getAccessToken(),
authenticationResult.getRefreshToken());
this.authorizedClientRepository.saveAuthorizedClient(authorizedClient, oauth2Authentication, request, response);
return oauth2Authentication;
}
Кто-нибудь пытался сделать это раньше?