Brauser jõuab identiteedipakkujani, seejärel ebaõnnestub sisselogimine, kui rakendus vahetab tagastatud autoriseerimiskoodi. See vahetus on rakendusserverist väljuv päring, millel on oma HTTP-klient.

Spring Security 6.5-s saadaoleva RestClient-põhise API jaoks varustage autoriseerimiskoodi tokeni vastuse klient puhverserverist teadliku päringutehasega:

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

Muunduri- ja veakäsitleja klassid säilitavad Spring Security dokumenteeritud tokenipäringu käitumise. Üldine RestClient, mis on konfigureeritud ainult sõltumatu JSON-API jaoks, ei ole samaväärne asendus.

Ühendage sama tokenClient olemasoleva turvakonfiguratsiooniga:

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

Need on konfiguratsioonifragmendid rakendusele, millel on juba kliendiregistreerimine ja SecurityFilterChain. Need valivad autentimiseta HTTP-puhverserveri; volitusi nõudev puhverserver vajab valitud transpordi vastavat autentimiskonfiguratsiooni. Lubatud avalikul marsruudil avalikult kättesaadava HTTPS-tokeni lõpp-punkti jaoks saab HTTP-puhverserverite loendist HTTP-kirje selle kontota puhverserveri aadressi täita.

Hoidke puhverserveri host eraldi selle pordist ja URL-i skeemist. Jätke identiteedipakkuja tokeni URI sihtkohaks. Näide ei asenda sertifikaadi valideerimist.

Hiljem tehtavad päringud vajavad oma omandikontrolli. UserInfo hankimine, värskendustokeni vahetused, client-credentials-annetused ja kaitstud API-kutsed võivad kasutada teisi kliendiobjekte. Konfigureerige vastav toetatud klient, kui see toiming vajab samuti marsruuti. Spring Security 6.5 reaktiivse client_credentials-voo jaoks konfigureerige reaktiivne tokeniklient ja selle annetusepakkuja eraldi.

Vanemad näited, mis kasutavad OAuth2RestTemplate'i ja AccessTokenProviderit, kuuluvad vanema Spring Security OAuthi projekti juurde. Enne koodi kohandamist valige API, mida paigaldatud rakendus kasutab; ärge segage neid objekte sellesse konfiguratsiooni.

Seotud artiklid