使用OAuth2.0进行身份验证后,Google身份验证页面未重定向

时间:2019-07-07 09:33:26

标签: spring-boot oauth-2.0 spring-security-oauth2

我正在使用Spring Boot应用程序使用OAuth2.0设置Spring Security。身份验证页面随附已登录的google用户,但选择了一个身份验证页面后,它将再次加载相同的身份验证页面。

HomeController.java

import java.security.Principal;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
public class HomeController {


    @RequestMapping("/")
    public ModelAndView home() {
        System.out.println("inside home");
        ModelAndView model = new ModelAndView("home");
        return model;
    }

    @RequestMapping("/login")
    public ModelAndView loginPage() {
        System.out.println("inside login");
        ModelAndView model = new ModelAndView("login");
        return model;
    }

    @RequestMapping("user")
    @ResponseBody
    public Principal user(Principal principal) {
        System.out.println("inside userrrrrrrrr");
        return principal;
    }
}

AppSecurityConfig.java

@Configuration
@EnableWebSecurity  
@EnableOAuth2Sso
public class AppSecurityConfig extends WebSecurityConfigurerAdapter{

@Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {

       // System.out.println(httpSecurity.);
        try {
            System.out.println("inside configure");
            httpSecurity
            .csrf().disable()
            .authorizeRequests().antMatchers("/login").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin().disable();
        }catch(Exception e) {
            System.err.println("exception caught:"+e);
        }   

    }
}

这是我的OAuth配置的application.properties文件: 我正在更改客户端ID和客户端密码。

security.oauth2.client.client-id = 434559791042-642qk4agcs32g1rajsssss62ilrd86s4.apps.googleusercontent.com
security.oauth2.client.client-secret = 1l4jqw7lBailpuVgWobvcxwo 
security.oauth2.client.access-token-uri = https://www.googleapis.com/oauth2/v3/token
security.oauth2.client.user-authorization-uri = https://accounts.google.com/o/oauth2/auth
security.oauth2.client.tokenName = oauth_token
security.oauth2.client.authenticationScheme = query
security.oauth2.client.clientAuthenticationScheme = form
security.oauth2.client.scope = profile email

security.oauth2.resource.user-info-uri = https://www.googleapis.com/userinfo/v2/me
security.oauth2.resource.preferTokenInfo = false

在我的Google api应用中,我在下面给出了重定向。

授权的JavaScript来源:http://localhost:8080 授权的重定向URI:http://localhost:8080/login

我已经登录的帐户附带了google身份验证框架,但是当我选择它时,它又显示了相同的身份验证框架。 验证后,它应该重定向到我的本机应用程序。

1 个答案:

答案 0 :(得分:0)

检查redirect_uri春季正在发送给Google。 您可以在浏览器中执行此操作,方法是右键单击并选择检查,然后选择网络选项卡。 因此,当您选择在Web应用程序中登录google时,应该看到spring将重定向响应发送到您的浏览器,它将发送到Google,并且将包含一个参数redirect_uri,这是Google会将重定向发送到的响应。确保它是正确的。 并确保它与您在API页面中提供给Google的URI(与Google一样) 将阻止所有不知道的内容。