Spring Security Oauth oauth2UserService (работает на github, но не работает на google) - PullRequest
0 голосов
/ 02 мая 2020

Я изучаю учебник https://spring.io/guides/tutorials/spring-boot-oauth2/, в последнем примере есть пример добавления сообщения об ошибке. Кажется, все работает нормально, но я не понимаю, почему при входе в систему с помощью github этот компонент работает, но при входе в систему через Google он не работает. (При отладке он останавливается при входе через github и не останавливается при входе через google ). Где замечено, что только для 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", ""));
    };
}
...