使用Spring Boot和Google OAuth2设置自定义oidcService

我正在尝试将Google登录信息集成到我的Spring Boot应用程序中。我试图通过Google注册/登录新用户,因此像许多教程中一样,我实现了自己的OidcService。但是问题在于,无论我尝试使用自定义OidcService实现如何,都不会被调用。请帮忙。谢谢

我的SecurityConfig看起来像这样:

 @Override
protected void configure(HttpSecurity http) throws Exception {
    http.
            csrf().disable().
            authorizeRequests().
            antMatchers("/auth/register","/auth/login").permitAll()
            .anyRequest().authenticated()
            .and()
            .oauth2Login()
            .redirectionEndpoint()
            .baseUri("/oauth2/callback/*")
            .and()
            .userInfoEndpoint()
            .oidcUserService(oidcUserService)
            .and()
            .authorizationEndpoint()
            .baseUri("/oauth2/authorize")
            .authorizationRequestRepository(customAuthorizationRequestRepository())
            .and()
            .failureHandler(oAuth2AuthenticationFailureHandler);
}

这是我的OidcService:

@服务 公共类CustomOidcUserService扩展了OidcUserService {

private final UserRepository userRepository;

public CustomOidcUserService(UserRepository userRepository) {
    this.userRepository = userRepository;
}

@Override
public OidcUser loadUser(OidcUserRequest userRequest) throws OAuth2AuthenticationException {
    System.out.println("TU");
    OidcUser oidcUser = super.loadUser(userRequest);

    Map<String,Object> attributes = oidcUser.getattributes();
    GoogleOAuth2UserInfo userInfo = new GoogleOAuth2UserInfo(attributes);

    updateUser(userInfo);

    return oidcUser;
}

private void updateUser(GoogleOAuth2UserInfo userInfo) {
    Optional<User> user = userRepository.findByEmail(userInfo.getEmail());

    if (user.isPresent()) {
        user.get().setEmail(userInfo.getEmail());
        user.get().setfirstName(userInfo.getName().split(" ")[0]);
        user.get().setSurName(userInfo.getName().split(" ")[1]);

        userRepository.save(user.get());
    } else {
        User newUser = new User(userInfo.getName().split(" ")[0],userInfo.getName().split(" ")[1],userInfo.getEmail(),"");
        userRepository.save(newUser);
    }
}

}

huanhuanelsie 回答:使用Spring Boot和Google OAuth2设置自定义oidcService

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2870016.html

大家都在问