Brskalnik doseže ponudnika identitete, nato prijava spodleti, ko aplikacija izmenja vrnjeno avtorizacijsko kodo. Ta izmenjava je odhodna zahteva z aplikacijskega strežnika z lastnim odjemalcem HTTP.

Za API, ki temelji na RestClient in je na voljo v Spring Security 6.5, zagotovite odjemalcu odgovora z žetonom avtorizacijske kode tovarno zahtev, ki pozna posrednika:

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

Razreda pretvornika in obravnave napak ohranjata dokumentirano vedenje zahteve za žeton v Spring Security. Splošen RestClient, konfiguriran samo za nepovezan API JSON, ni enakovredna zamenjava.

Povežite isti tokenClient z obstoječo varnostno konfiguracijo:

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

To so delci konfiguracije za aplikacijo, ki že ima registracijo odjemalca in SecurityFilterChain. Izberejo posrednika HTTP brez preverjanja pristnosti; posrednik, ki zahteva poverilnice, potrebuje ustrezno konfiguracijo preverjanja pristnosti izbranega prenosa. Za javno dostopno končno točko žetona HTTPS na dovoljeni javni poti lahko vnos HTTP s seznama posrednikov HTTP zapolni ta naslov posrednika brez računa.

Ohranite gostitelja posrednika ločeno od njegovih vrat in sheme URL. Pustite URI žetona ponudnika identitete kot cilj. Primer ne nadomešča preverjanja potrdil.

Poznejše zahteve potrebujejo lastno preverjanje lastništva. Pridobivanje UserInfo, izmenjave žetona za osvežitev, dodelitve client-credentials in klici zaščitenega API-ja lahko uporabljajo druge odjemalčeve objekte. Konfigurirajte ustreznega podprtega odjemalca, ko tudi ta operacija potrebuje pot. Za reaktivni tok client_credentials v Spring Security 6.5 konfigurirajte reaktivnega odjemalca žetonov in njegovega ponudnika dodelitev ločeno.

Starejši primeri z OAuth2RestTemplate in AccessTokenProvider spadajo v starejši projekt Spring Security OAuth. Pred prilagajanjem kode izberite API, ki ga uporablja nameščena aplikacija; teh objektov ne mešajte v to konfiguracijo.

Sorodni članki