Tarayıcı kimlik sağlayıcısına ulaşır, ardından uygulama dönen yetkilendirme kodunu değiştirdiğinde oturum açma başarısız olur. Bu alışveriş, uygulama sunucusundan çıkan ve kendi HTTP istemcisine sahip bir istektir.

Spring Security 6.5'te bulunan RestClient tabanlı API için yetkilendirme kodu belirteç yanıtı istemcisine proxy farkında bir istek fabrikası sağlayın:

SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setProxy(new java.net.Proxy(
    java.net.Proxy.Type.HTTP,
    new java.net.InetSocketAddress("proxy.example", 8080)));
factory.setConnectTimeout(5000);
factory.setReadTimeout(15000);

RestClient tokenHttp = RestClient.builder()
    .requestFactory(factory)
    .messageConverters(converters -> {
        converters.clear();
        converters.add(new FormHttpMessageConverter());
        converters.add(new OAuth2AccessTokenResponseHttpMessageConverter());
    })
    .defaultStatusHandler(new OAuth2ErrorResponseErrorHandler())
    .build();

RestClientAuthorizationCodeTokenResponseClient tokenClient =
    new RestClientAuthorizationCodeTokenResponseClient();
tokenClient.setRestClient(tokenHttp);

Dönüştürücü ve hata işleyici sınıfları Spring Security'nin belgelenmiş belirteç isteği davranışını korur. Yalnızca ilgisiz bir JSON API için yapılandırılmış genel bir RestClient eşdeğer bir değiştirme değildir.

Aynı tokenClient'ı mevcut güvenlik yapılandırmasına bağlayın:

http.oauth2Login(login -> login
    .tokenEndpoint(token -> token
        .accessTokenResponseClient(tokenClient)));

Bunlar, istemci kaydı ve SecurityFilterChain'e zaten sahip bir uygulama için yapılandırma parçalarıdır. Kimlik doğrulaması olmayan bir HTTP proxy seçerler; kimlik bilgileri gerektiren bir proxy, seçilen aktarımın eşleşen kimlik doğrulama yapılandırmasına ihtiyaç duyar. İzin verilen genel bir rotada genel olarak erişilebilen bir HTTPS belirteç uç noktası için, HTTP proxy listesinden bir HTTP girdisi hesapsız proxy adresini doldurabilir.

Proxy ana bilgisayarını bağlantı noktasından ve URL şemasından ayrı tutun. Kimlik sağlayıcısının belirteç URI'sini hedef olarak bırakın. Örnek, sertifika doğrulamasının yerini almaz.

Sonraki istekler kendi sahiplik kontrolüne ihtiyaç duyar. UserInfo alma, yenileme belirteci alışverişleri, client-credentials hibeleri ve korumalı API çağrıları başka istemci nesneleri kullanabilir. Bu işlem de rotaya ihtiyaç duyduğunda ilgili desteklenen istemciyi yapılandırın. Spring Security 6.5'in reaktif client_credentials akışı için reaktif belirteç istemcisini ve hibe sağlayıcısını ayrı olarak yapılandırın.

OAuth2RestTemplate ve AccessTokenProvider kullanan eski örnekler daha eski Spring Security OAuth projesine aittir. Kodu uyarlamadan önce kurulu uygulamanın kullandığı API'yi seçin; bu nesneleri bu yapılandırmaya karıştırmayın.

İlgili makaleler