我正在使用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身份验证框架,但是当我选择它时,它又显示了相同的身份验证框架。 验证后,它应该重定向到我的本机应用程序。
答案 0 :(得分:0)
检查redirect_uri春季正在发送给Google。 您可以在浏览器中执行此操作,方法是右键单击并选择检查,然后选择网络选项卡。 因此,当您选择在Web应用程序中登录google时,应该看到spring将重定向响应发送到您的浏览器,它将发送到Google,并且将包含一个参数redirect_uri,这是Google会将重定向发送到的响应。确保它是正确的。 并确保它与您在API页面中提供给Google的URI(与Google一样) 将阻止所有不知道的内容。