Spring Security 6.5: beina OAuth-heimildarkóðaskiptum í gegnum milliþjón
Gefðu viðskiptavini táknsvörunar heimildarkóðans í Spring Security RestClient sem þekkir milliþjón, en haltu OAuth-breytunum og villumeðhöndlaranum.
Vafrinn nær í auðkennisveituna, og síðan mistekst innskráning þegar forritið skiptir á skilaða heimildarkóðanum. Þessi skipti eru útleiðarbeiðni frá forritsþjóninum, með sínum eigin HTTP-viðskiptavini.
Fyrir RestClient-undirstaða API-ið sem er í boði í Spring Security 6.5, útvegaðu beiðnaverksmiðju sem þekkir milliþjón fyrir viðskiptavin táknsvörunar heimildarkóðans:
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);
Breytunar- og villumeðhöndlunarflokkarnir varðveita skjalfesta hegðun tákna beiðna í Spring Security. Almennur RestClient sem er aðeins stilltur fyrir ótengt JSON-API er ekki jafngild staðgengill.
Tengdu sama tokenClient við fyrirliggjandi öryggisstillingu:
http.oauth2Login(login -> login
.tokenEndpoint(token -> token
.accessTokenResponseClient(tokenClient)));
Þetta eru stillingarbrot fyrir forrit sem hefur þegar skráningu viðskiptavinar og SecurityFilterChain. Þau velja HTTP-milliþjón án auðkenningar; milliþjónn sem krefst skilríkja þarf samsvarandi auðkenningarstillingu valda flutningsins. Fyrir opinberlega aðgengilegan HTTPS-táknendapunkt á leyfðri opinberri leið getur HTTP-færsla úr HTTP-milliþjónalistanum fyllt þetta milliþjónsfang án reiknings.
Haltu milliþjónshýsilnum aðskildum frá gáttinni og URL-skemanu. Láttu tákn-URI auðkennisveitunnar vera áfangastaðinn. Dæmið kemur ekki í stað vottorðasannprófunar.
Síðari beiðnir þurfa eigin eignarréttarathugun. Sókn UserInfo, endurnýjunartákna skipti, client-credentials styrkir og verndaðar API-kall geta notað aðra viðskiptavina hluti. Stilltu samsvarandi studdan viðskiptavin þegar sú aðgerð þarf líka leiðina. Fyrir raunvirka client_credentials flæðið í Spring Security 6.5, stilltu raunvirka táknviðskiptavininn og styrkveitanda hans sérstaklega.
Eldri dæmi sem nota OAuth2RestTemplate og AccessTokenProvider tilheyra eldra Spring Security OAuth verkefninu. Veldu API-ið sem uppsetta forritið notar áður en þú aðlagar kóða; ekki blanda þeim hlutum í þessa stillingu.