【发布时间】:2022-01-20 20:31:36
【问题描述】:
我的目标是通过身份验证服务(如 google 或 github)对用户进行身份验证。
我尝试同时使用两者,但我不明白为什么在 github 上我的身份验证由我的 OAuth2UserService 处理,而在 google 中,这是我的 OidcUserService 被调用。
我希望两者都调用 OidcUserService,因为这只是我需要的身份验证。
那么,为什么会有这样的差异? 你能告诉我吗? 我错过了什么吗?
一些代码来说明
@Service
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
OAuth2User user = super.loadUser(userRequest);
log.info("OAuth2User loading");
return user;
}
}
@Service
public class CustomOidcUserService extends OidcUserService {
@Override
public OidcUser loadUser(OidcUserRequest userRequest) throws OAuth2AuthenticationException {
OidcUser user = super.loadUser(userRequest);
log.info("OidcUser loading");
return user;
}
}
// MyAppSecurityConfig.java
@Configuration
public class MyAppSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.oauth2Login()
;
}
}
# application.properties
spring.security.oauth2.client.registration.github.client-id=xxxx
spring.security.oauth2.client.registration.github.client-secret=xxx
spring.security.oauth2.client.registration.google.client-id=xxxx
spring.security.oauth2.client.registration.google.client-secret=xxxx
【问题讨论】:
标签: java spring oauth-2.0 openid-connect