gpt4 book ai didi

spring-boot - Spring Security Oauth oauth2UserService(适用于 github 但不适用于 google)

转载 作者:行者123 更新时间:2023-12-05 07:09:26 27 4
gpt4 key购买 nike

我在学习教程https://spring.io/guides/tutorials/spring-boot-oauth2/在最后一个例子中有一个添加错误信息的例子。一切似乎都工作正常,但我不明白为什么当我使用 github 登录时这个 bean 工作但是当我用谷歌登录时它不起作用。(当我调试它时断点在 github 登录时停止并且在通过谷歌登录时不会停止)。哪里注意到仅适用于 github?bean(完全来自示例):

@Bean
public OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService(WebClient rest) {
DefaultOAuth2UserService delegate = new DefaultOAuth2UserService();// breakpoint here
return request -> {
OAuth2User user = delegate.loadUser(request); //and breakpoint here
if (!"github".equals(request.getClientRegistration().getRegistrationId())) {
return user;
}

OAuth2AuthorizedClient client = new OAuth2AuthorizedClient
(request.getClientRegistration(), user.getName(), request.getAccessToken());
String url = user.getAttribute("organizations_url");
List<Map<String, Object>> orgs = rest
.get().uri(url)
.attributes(oauth2AuthorizedClient(client))
.retrieve()
.bodyToMono(List.class)
.block();

if (orgs.stream().anyMatch(org -> "spring-projects".equals(org.get("login")))) {
return user;
}

throw new OAuth2AuthenticationException(new OAuth2Error("invalid_token", "Not in Spring Team", ""));
};
}

最佳答案

您可以使用 OidcUserService Hook google oauth 身份验证过程。

查看下面的文章。

https://www.devglan.com/spring-security/spring-boot-security-google-oauth

希望这有帮助..

关于spring-boot - Spring Security Oauth oauth2UserService(适用于 github 但不适用于 google),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61556155/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com