Spring Security 6.5: den OAuth-Autorisatiounscode-Austausch iwwer e Proxy leeden
Gitt dem Spring Security sengem Token-Antwert-Client fir den Autorisatiounscode en proxybewussten RestClient, wärend seng OAuth-Konverter an de Fehlerbehandler erhalen bleiwen.
De Browser erreecht den Identitéitsprovider, duerno schléit d'Anmeldung fehl, wann d'Applikatioun den zréckginnene Autorisatiounscode austauscht. Dësen Austausch ass eng erausgoend Ufro vum Applikatiounsserver, mat sengem eegene HTTP-Client.
Fir d'RestClient-baséiert API, déi an Spring Security 6.5 verfügbar ass, gitt dem Token-Antwert-Client fir den Autorisatiounscode eng proxybewosst Ufro-Fabrik:
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'Konverter- an de Fehlerbehandlerklassen erhalen dat dokumentéiert Token-Ufro-Verhalen vu Spring Security. E generesche RestClient, deen nëmmen fir eng onverbonnen JSON-API konfiguréiert ass, ass kee gläichwäertegen Ersatz.
Verbannt deeselwechten tokenClient mat der bestehender Sécherheetskonfiguratioun:
http.oauth2Login(login -> login
.tokenEndpoint(token -> token
.accessTokenResponseClient(tokenClient)));
Dëst si Konfiguratiounsfragementer fir eng Applikatioun, déi schonn hir Clientregistréierung an de SecurityFilterChain huet. Si wielen en HTTP-Proxy ouni Authentifikatioun; en Proxy, dee Umeldungsinformatioune verlaangt, brauch déi passend Authentifikatiounskonfiguratioun vum gewielten Transport. Fir en ëffentlech erreechbaren HTTPS-Token-Endpunkt op enger erlaabter ëffentlecher Streck kann en HTTP-Andrag aus der HTTP-Proxy-Lëscht déi Proxyadress ouni Kont ausfëllen.
Halt den Proxyhost getrennt vu sengem Port an URL-Schema. Loosst d'Token-URI vum Identitéitsprovider als Destinatioun. D'Beispill ersetzt net d'Zertifikatsvalidéierung.
Spéider Ufroe brauchen hir eege Besëtzpréifung. D'Ofruffe vun UserInfo, d'Austausche vu Refresh-Token, client-credentials-Granten an déi geschützt API-Aufruffer kënnen aner Clientobjete benotzen. Konfiguréiert de entspriechende ënnerstëtzte Client, wann déi Operatioun och d'Streck brauch. Fir de reaktive client_credentials-Floss vu Spring Security 6.5 konfiguréiert de reaktiven Token-Client a säin Grant-Provider getrennt.
Méi al Beispiller mat OAuth2RestTemplate an AccessTokenProvider gehéieren zum méi ale Spring Security OAuth-Projet. Wielt d'API, déi déi installéiert Applikatioun benotzt, ier Dir de Code upasst; vermëscht dës Objeten net an dëser Konfiguratioun.