Spring WebClient и client_credentials предоставляют - PullRequest
0 голосов
/ 02 октября 2018

Мой вопрос относится только к spring-security 5.1.0 и использованию Spring WebClient.Я работаю в серверной среде, используя Spring Boot 2.1.0.Этот вопрос , возможно, уже задавался, но в то время ответить на него не удалось.

Считывание замечаний к выпуску spring-security 5.1.0 , похоже, онидобавили поддержку потока аутентификации client_credentials, в частности добавив его в bean-компонент WebClient, чтобы конечному пользователю никогда не приходилось беспокоиться о токене аутентификации.Я пытаюсь сделать именно это, но API / документация полностью потеряли меня.Моя текущая работа ниже ...

private ClientRegistration clientRegistration() {
    return ClientRegistration.withRegistrationId("registration-id")
        .clientId("client-id")
        .clientSecret("secret")
        .tokenUri("token-url")
        .clientAuthenticationMethod(ClientAuthenticationMethod.BASIC)
        .authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
        .scope("scopes")
        .build();
}

@Bean
public WebClient webClient() {
    ClientRegistrationRepository clientRegistrationRepository = new InMemoryClientRegistrationRepository(this.clientRegistration());
    OAuth2AuthorizedClientService oAuth2AuthorizedClientService = new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepository);
# These are unused ^ but pieces of documentation seem to indicate they are required

    return WebClient.builder()
        .filter(new ServerOAuth2AuthorizedClientExchangeFilterFunction()) # this requires 2 arguments that I do not have
        .build();
}

Моя конечная цель - иметь возможность автоматически связывать bean-компонент WebClient где угодно и просто делать запросы с автоматически добавляемым однонаправленным .*

1 Ответ

0 голосов
/ 02 декабря 2018

Поскольку Spring Security 5.1 добавляет более простую реализацию механизма проверки подлинности OAuth2, я предлагаю вам взглянуть на эту более свежую статью: StackOverflow - Spring Security 5.1 - получение токена для потока учетных данных клиента с помощью WebClient .

Отныне вам не нужно управлять ClientRegistration.Все можно установить с помощью свойств.

Затем для экземпляра WebClient необходимо вставить ClientRegistrationRepository из Spring, и вам нужно использовать новый экземпляр UnAuthenticatedServerOAuth2AuthorizedClientRepository, так как вы не присоединяете ни одного пользователя к вашему.прикладной процесс.Таким образом, у вас будет два аргумента, необходимых ServerOAuth2AuthorizedClientExchangeFilterFunction.

Я попытался поместить сценарий, в котором клиентское приложение запрашивает данные с сервера ресурсов на защищенных конечных точках OAuth2 с использованием WebClient в репозитории GitHUb: GitHub - Spring Security OAuth2 Процесс между компьютерами .Механизм аутентификации теперь намного проще с Spring Security 5.1.

Пожалуйста, спросите, если у вас есть какие-либо вопросы.Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...