Nettlesaren når identitetsleverandøren, og deretter mislukkast innlogginga når applikasjonen utvekslar den returnerte autorisasjonskoden. Den utvekslinga er ein utgåande førespurnad frå applikasjonsserveren, med sin eigen HTTP-klient.

For det RestClient-baserte API-et som er tilgjengeleg i Spring Security 6.5, gje tokenresponsklienten for autorisasjonskoden ein proxybevisst førespurnadsfabrikk:

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

Konverter- og feilhandteringsklassane held på den dokumenterte tokenførespurnadsåtferda til Spring Security. Ein generisk RestClient som berre er konfigurert for eit urelatert JSON-API, er ikkje ein likeverdig erstatning.

Kopla den same tokenClient til den eksisterande tryggleikskonfigurasjonen:

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

Dette er konfigurasjonsbitar for ein applikasjon som allereie har klientregistreringa og SecurityFilterChain. Dei vel ein HTTP-proxy utan autentisering; ein proxy som krev legitimasjon, treng den valde transporten si tilsvarande autentiseringskonfigurasjon. For eit offentleg tilgjengeleg HTTPS-tokenendepunkt på ei tillaten offentleg rute kan ein HTTP-oppføring frå HTTP-proxylista fylla ut den proxyadressa utan konto.

Hald proxyverten skild frå porten og URL-skjemaet. Lat token-URI-en til identitetsleverandøren vere destinasjonen. Dømet erstattar ikkje sertifikatvalidering.

Seinare førespurnader treng si eiga eigarskapskontroll. Henting av UserInfo, utvekslingar av oppdateringstoken, client-credentials-tildelingar og beskytta API-kall kan bruke andre klientobjekt. Konfigurer den tilsvarande støtta klienten når den operasjonen òg treng ruta. For den reaktive client_credentials-flyten i Spring Security 6.5 konfigurerer du den reaktive tokenklienten og tildelingsleverandøren hans separat.

Eldre døme med OAuth2RestTemplate og AccessTokenProvider høyrer til det eldre Spring Security OAuth-prosjektet. Vel API-et som den installerte applikasjonen brukar før du tilpassar kode; ikkje bland desse objekta inn i denne konfigurasjonen.

Relaterte artiklar