我有一个要使用springs security 5 Oauth2保护的spring mvc Web应用程序,该应用程序已成功重定向到google以进行身份验证,但是问题在于,在用户从中选择帐户后,它会立即保持重定向回同意页面的状态。该同意页面。 下面是我的相关配置。
@Override
protected void configure(HttpSecurity http) throws Exception {
http.exceptionHandling()
.authenticationEntryPoint(authenticationEntryPoint())
.and()
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.and()
.addFilterAfter(oauth2ClientContextFilter, ExceptionTranslationFilter.class)
.addFilterBefore(oauth2ClientAuthenticationProcessingFilter(), FilterSecurityInterceptor.class)
.anonymous()
.disable();
}
@Bean
public OAuth2ProtectedResourceDetails authorizationCodeResource() {
logger.info("authorizationCodeResource");
AuthorizationCodeResourceDetails details = new AuthorizationCodeResourceDetails();
details.setId("google");
details.setClientId(environment.getProperty("google.clientId"));
details.setClientSecret(environment.getProperty("google.clientSecret"));
details.setUserAuthorizationUri(environment.getProperty("google.userAuthorizationUri"));
details.setAccessTokenUri(environment.getProperty("google.accessTokenUri"));
details.setAuthenticationScheme(AuthenticationScheme.query);
details.setClientAuthenticationScheme(AuthenticationScheme.form);
details.setPreEstablishedRedirectUri(environment.getProperty("google.reDirectURI"));
details.setUseCurrentUri(false);
details.setScope(new ArrayList<>(Arrays.asList("openid")));
return details;
}
@Bean
public OAuth2ClientAuthenticationProcessingFilter oauth2ClientAuthenticationProcessingFilter() {
logger.info("oauth2ClientAuthenticationProcessingFilter");
OAuth2RestOperations restTemplate = new OAuth2RestTemplate(authorizationCodeResource(), oauth2ClientContext);
OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter(
environment.getProperty("google.callbackURI"));
filter.setRestTemplate(restTemplate);
filter.setTokenServices(googleUserInfoTokenServices());
return filter;
}
@Bean
@Description("Google API UserInfo resource server")
public GoogleUserInfoTokenServices googleUserInfoTokenServices() {
logger.info("googleUserInfoTokenServices");
GoogleUserInfoTokenServices userInfoTokenServices = new GoogleUserInfoTokenServices(
environment.getProperty("google.userInfoUri"),
environment.getProperty("google.clientId"));
return userInfoTokenServices;
}
@Bean
public AuthenticationEntryPoint authenticationEntryPoint() {
logger.info("authenticationEntryPoint");
return new LoginUrlAuthenticationEntryPoint(environment.getProperty("google.callbackURI"));
}
请帮助我。我可以提供您可能需要的任何其他详细信息