Spring Security 5 oauth2登录

时间:2018-12-07 00:06:13

标签: spring spring-security spring-security-oauth2

我有一个要使用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"));
}

请帮助我。我可以提供您可能需要的任何其他详细信息

0 个答案:

没有答案