Spring Oauth2 客户端与 Google 提供商不断要求身份验证

Spring Oauth2 client with Google provider keep asking for authentication

我已经创建了一个 Spring Oidc 客户端应用程序。我配置了一个 oauth2 客户端,如下所示:

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: my_client_id
            client-secret: my_secret
            clientName: myapp
            redirectUri: 'http://localhost:8081/wellcome'

WebSecurityConfigurerAdapter

.... 
   @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .oauth2Login();
    }

redirect url 配置在 http://localhost:8081/wellcome

在我初始化身份验证后,客户端被重定向到google身份验证页面,它不断要求身份验证。 如果我保留默认重定向 url,(即 ../oauth2/code/google),应用程序工作正常。

如果我配置不同的重定向,为什么重定向无法正常工作 url?

默认的重定向 URI 是 /login/oauth2/callback/{registrationId}

重定向到 /login/oauth2/callback/{registrationId} 时,OAuth2LoginAuthenticationFilter 将处理请求,尝试对用户进行身份验证并创建 OAuth2AuthenticationToken

通过更改重定向 URI,不会调用 OAuth2LoginAuthenticationFilter 并且应用程序不知道用户是否已通过身份验证,这就是它提示他们再次进行身份验证的原因。

您可能正在尝试更改 defaultSuccessUrl

这指定用户在身份验证成功后将被重定向到哪里。

http
    .oauth2Login(oauth2Login -> oauth2Login
        .defaultSuccessUrl("/welcome")
    )