Spring Security 6.5: kalimi i shkëmbimit të kodit të autorizimit OAuth përmes një proxy
Jepini klientit të përgjigjes së tokenit të kodit të autorizimit në Spring Security një RestClient që njeh proxy-n, duke ruajtur konvertuesit OAuth dhe trajtuesin e gabimeve.
Shfletuesi arrin te ofruesi i identitetit, pastaj hyrja dështon kur aplikacioni shkëmben kodin e autorizimit të kthyer. Ky shkëmbim është një kërkesë dalëse nga serveri i aplikacionit, me klientin e vet HTTP.
Për API-n e bazuar në RestClient të disponueshëm në Spring Security 6.5, jepini klientit të përgjigjes së tokenit të kodit të autorizimit një fabrikë kërkesash që njeh proxy-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);
Klasat e konvertuesit dhe të trajtuesit të gabimeve ruajnë sjelljen e dokumentuar të kërkesës për token të Spring Security. Një RestClient i përgjithshëm i konfiguruar vetëm për një API JSON të palidhur nuk është zëvendësim ekuivalent.
Lidhni të njëjtin tokenClient me konfigurimin ekzistues të sigurisë:
http.oauth2Login(login -> login
.tokenEndpoint(token -> token
.accessTokenResponseClient(tokenClient)));
Këto janë fragmente konfigurimi për një aplikacion që tashmë ka regjistrimin e klientit dhe SecurityFilterChain. Ata zgjedhin një proxy HTTP pa autentikim; një proxy që kërkon kredenciale ka nevojë për konfigurimin përkatës të autentikimit të transportit të zgjedhur. Për një pikë fundore tokeni HTTPS të aksesueshme publikisht në një rrugë publike të lejuar, një hyrje HTTP nga lista e proxy-ve HTTP mund të plotësojë atë adresë proxy pa llogari.
Mbajeni hostin e proxy-t të ndarë nga porta dhe skema e URL-së. Lëreni URI-në e tokenit të ofruesit të identitetit si destinacion. Shembulli nuk zëvendëson vërtetimin e certifikatës.
Kërkesat e mëvonshme kanë nevojë për kontrollin e tyre të pronësisë. Marrja e UserInfo, shkëmbimet e tokenit të rifreskimit, dhëniet client-credentials dhe thirrjet e API-së të mbrojtur mund të përdorin objekte të tjera klienti. Konfiguroni klientin përkatës të mbështetur kur edhe ky operacion ka nevojë për rrugën. Për rrjedhën reaktive client_credentials të Spring Security 6.5, konfiguroni klientin reaktiv të tokenit dhe ofruesin e dhënieve të tij veçmas.
Shembujt e vjetër që përdorin OAuth2RestTemplate dhe AccessTokenProvider i përkasin projektit më të vjetër Spring Security OAuth. Zgjidhni API-n që përdor aplikacioni i instaluar përpara se të përshtatni kodin; mos i përzieni ato objekte në këtë konfigurim.