A böngésző eléri az identitásszolgáltatót, majd a bejelentkezés meghiúsul, amikor az alkalmazás kicseréli a visszakapott engedélyezési kódot. Ez a csere az alkalmazásszerver kimenő kérése, saját HTTP-klienssel.

A Spring Security 6.5-ben elérhető RestClient-alapú API esetében lássa el az engedélyezési kód tokenválasz-kliensét proxyképes kérésgyárral:

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);

Az átalakító- és hibakezelő osztályok megőrzik a Spring Security dokumentált tokenkérési viselkedését. Egy általános RestClient, amely csak egy nem kapcsolódó JSON API-hoz van beállítva, nem egyenértékű helyettesítő.

Kösse be ugyanazt a tokenClientet a meglévő biztonsági konfigurációba:

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

Ezek konfigurációs töredékek egy olyan alkalmazáshoz, amely már rendelkezik kliensregisztrációval és SecurityFilterChainnel. Hitelesítés nélküli HTTP-proxyt választanak; a hitelesítő adatokat igénylő proxyhoz a választott átvitel megfelelő hitelesítési konfigurációja kell. Egy engedélyezett nyilvános útvonalon nyilvánosan elérhető HTTPS-tokenvégponthoz a HTTP-proxylistáról származó HTTP-bejegyzés kitöltheti ezt a fiók nélküli proxycímet.

Tartsa a proxy gazdagépét külön a portjától és URL-sémájától. Hagyja az identitásszolgáltató token-URI-ját célként. A példa nem helyettesíti a tanúsítvány-ellenőrzést.

A későbbi kéréseknek saját tulajdonellenőrzésre van szükségük. A UserInfo lekérése, a frissítési token cseréje, a client-credentials kedvezmények és a védett API-hívások más kliensobjektumokat használhatnak. Konfigurálja a megfelelő támogatott klienst, amikor ez a művelet is igényli az útvonalat. A Spring Security 6.5 reaktív client_credentials folyamatához külön konfigurálja a reaktív tokenklienst és annak kedvezmény-szolgáltatóját.

Az OAuth2RestTemplate-et és AccessTokenProvider-t használó régi példák a régebbi Spring Security OAuth projekthez tartoznak. A kód adaptálása előtt válassza ki a telepített alkalmazás által használt API-t; ne keverje ezeket az objektumokat ebbe a konfigurációba.

Kapcsolódó cikkek