Spring Security 6.5: OAuth baimen-kodearen trukea proxy bidez
Eman Spring Securityren baimen-kodearen token erantzun bezeroari proxyaz jabetzen den RestClient bat, bere OAuth bihurgailuak eta errore-kudeatzailea mantenduz.
Nabigatzaileak identitate-hornitzailearengana iristen da, eta gero saio-hasiera huts egiten du aplikazioak itzulitako baimen-kodea trukatzen duenean. Truke hori aplikazio-zerbitzaritik irteten den eskaera da, bere HTTP bezero propioa duena.
Spring Security 6.5ean eskuragarri dagoen RestClient oinarritutako APIrako, hornitu baimen-kodearen token erantzun bezeroa proxyaz jabetzen den eskaera-fabrika batekin:
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);
Bihurgailu eta errore-kudeatzaile klaseek Spring Securityren token-eskaeraren dokumentatutako portaera gordetzen dute. JSON API ez-eratorri baterako soilik konfiguratutako RestClient orokorra ez da ordezkapen baliokidea.
Konektatu tokenClient bera lehendik dagoen segurtasun-konfigurazioan:
http.oauth2Login(login -> login
.tokenEndpoint(token -> token
.accessTokenResponseClient(tokenClient)));
Hauek konfigurazio-zatiak dira, jadanik bere bezero-erregistroa eta SecurityFilterChain dituen aplikazio baterako. Autentifikaziorik gabeko HTTP proxy bat hautatzen dute; kredentzialak behar dituen proxy batek hautatutako garraioaren autentifikazio-konfigurazio egokia behar du. Bide publiko baimendu batean publikoki irisgarria den HTTPS token amaierako puntu baterako, HTTP proxy zerrendako HTTP sarrera batek konturik gabeko proxy helbide hori bete dezake.
Mantendu proxy ostalaria bere portutik eta URL eskematik bereizita. Utzi identitate-hornitzailearen token URIa helmugatzat. Adibideak ez du ziurtagirien baliozkotzea ordezkatzen.
Geroagoko eskaerek beren jabetza-egiaztapena behar dute. UserInfo eskuratzeak, freskatze-tokenen trukeek, client-credentials lagapenek eta API babestuen deiek beste bezero objektu batzuk erabil ditzakete. Konfiguratu dagokion bezero onartua eragiketa horrek bidea ere behar duenean. Spring Security 6.5en client_credentials fluxu erreaktiboarako, konfiguratu token bezero erreaktiboa eta bere lagapen-hornitzailea bereizita.
OAuth2RestTemplate eta AccessTokenProvider erabiltzen dituzten adibide zaharrak Spring Security OAuth proiektu zaharragokoak dira. Hautatu instalatutako aplikazioak erabiltzen duen APIa kodea egokitu aurretik; ez nahastu objektu horiek konfigurazio honetan.