Я работаю над приложением с Spring Boot 5 и OID C. Я настроил OID C с помощью Google, и он отлично работает. Меня перенаправляют на вход в Google, а затем он перенаправляет меня в приложение, создающее новый сеанс. Теперь пытаюсь использовать Google One-Tap . Он тоже отлично работает. Когда пользователь нажимает на модальное окно в одно касание, чтобы продолжить работу со своим идентификатором Google, я получаю POST с id_token. Что я хочу сделать, так это создать сеанс Spring из этого POST, поскольку он создается, когда пользователь входит в систему по OID C.
Я думаю, что правильный способ - это создать 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;
}
Кто-нибудь пробовали сделать это раньше?