Proxy üzerinden giden bir WebClient kaynağı, token edinimi başka bir bağlayıcı kullanıyorsa API çağrısından önce yine de başarısız olabilir. Spring Security 6.5'in reaktif client_credentials akışı için üç parçayı da bağlayın:

HttpClient route = HttpClient.create()
    .proxy(p -> p.type(ProxyProvider.Proxy.HTTP)
        .host("proxy.example").port(8080));
WebClient tokenHttp = WebClient.builder()
    .clientConnector(new ReactorClientHttpConnector(route))
    .build();

var tokens = new WebClientReactiveClientCredentialsTokenResponseClient();
tokens.setWebClient(tokenHttp);

var provider = new ClientCredentialsReactiveOAuth2AuthorizedClientProvider();
provider.setAccessTokenResponseClient(tokens);

var manager = new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(
    registrations, authorizedClients);
manager.setAuthorizedClientProvider(provider);

tokens.setWebClient token HTTP istemcisini atar; provider.setAccessTokenResponseClient onu grant sağlayıcısına atar; manager.setAuthorizedClientProvider o sağlayıcıyı kurar. Bu yöneticiyi gerçek OAuth filtresinde veya authorized-client iş akışında kullanın.

HttpClient ve ProxyProvider Reactor Netty türleridir. WebClient ve bağlayıcısı Spring WebFlux türleridir. Mevcut ReactiveClientRegistrationRepository değerini registrations olarak, ReactiveOAuth2AuthorizedClientService değerini authorizedClients olarak verin.

Bu sağlayıcı client_credentials ile ilgilenir; başka grant'lar gerekiyorsa uygun sağlayıcı zincirini koruyun. Örnekte proxy hesabı yoktur; o, OAuth client ID/secret yerine taşıma katmanına ait olurdu. Genel bir aracı üzerinden izin verilen genel bir token endpoint için HTTP proxy listesinden host ve port seçin.

Bu API çağrıları rotaya ihtiyaç duyduğunda korunan kaynağın bağlayıcısını da yapılandırın. Token ve API başarısı ayrı sonuçlardır.

İlgili makaleler