Spring MVC+security+OAuth2 userInfoEndpoint()不起作用



我正在尝试以SpringMVC+security+OAuth2的身份登录。

成功接收到当前的身份验证状态,并且可以获得用户信息。

我想获取用户信息,所以我编写了userInfoEndpoint,但根本没有调用userInfoEndPoint

另一方面,CCD_ 3被成功地调用并且认证具有用户信息。

所以我有两个问题

首先,为什么根本没有调用userInfoEndpoint?在Spring Boot的情况下,它成功地调用了

第二,如何从successHandler的认证中获取用户信息?successHandler的身份验证只有这种方法。

Object getCredentials();
Object getDetails();
Object getPrincipal();
boolean isAuthenticated();
void setAuthenticated(boolean var1) throws IllegalArgumentException;

—源代码—

SecurityConfig.java

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/*").permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.and()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService)
.and()
.successHandler(new SuccessHandler());
}

SuccessHandler.java

@Log4j
public class SuccessHandler implements AuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Authentication authentication) throws IOException, ServletException {
log.info(authentication);
}
}

你能尝试在SecurityConfig.java中这样更改序列吗:

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService)
.and()
.authorizeRequests()
.antMatchers("/*").permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/")
.and()            
.successHandler(new SuccessHandler());
}

因为下面的代码允许所有URL,因此oauth2Login((代码永远无法访问。

.authorizeRequests()
.antMatchers("/*").permitAll()

我在使用Spring 3.1.0时遇到了同样的问题,它不起作用,我的CustomOAuth2Service根本没有被调用

相关内容

  • 没有找到相关文章

最新更新