Die blaaier bereik die identiteitsverskaffer, en dan misluk die aanmelding wanneer die toepassing die teruggekeerde magtigingskode uitruil. Daardie uitruiling is 'n uitgaande versoek van die toepassingbediener, met sy eie HTTP-kliënt.

Vir die RestClient-gebaseerde API wat in Spring Security 6.5 beskikbaar is, voorsien 'n proxy-bewuste versoekfabriek aan die magtigingskode-tokenresponskliënt:

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

Die omsetter- en fouthanteerderklasse behou Spring Security se gedokumenteerde tokenversoekgedrag. 'n Generiese RestClient wat slegs vir 'n onverwante JSON-API opgestel is, is nie 'n gelykwaardige vervanging nie.

Koppel dieselfde tokenClient aan die bestaande sekuriteitskonfigurasie:

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

Dit is konfigurasiefragmente vir 'n toepassing wat reeds sy kliëntregistrasie en SecurityFilterChain het. Hulle kies 'n HTTP-proxy sonder verifikasie; 'n proxy wat geloofsbriewe vereis, benodig die gekose vervoer se ooreenstemmende verifikasiekonfigurasie. Vir 'n publiek bereikbare HTTPS-token-eindpunt op 'n toegelate publieke roete kan 'n HTTP-inskrywing uit die HTTP-proxylys daardie proxy-adres sonder rekening vul.

Hou die proxy-gasheer apart van sy poort en URL-skema. Laat die identiteitsverskaffer se token-URI as die bestemming. Die voorbeeld vervang nie sertifikaatvalidering nie.

Latere versoeke het hul eie eienaarskapkontrole nodig. UserInfo-verkryging, hernuwingstoken-uitruilings, client-credentials-toekennings en beskermde API-oproepe kan ander kliëntobjekte gebruik. Stel die ooreenstemmende ondersteunde kliënt op wanneer daardie bewerking ook die roete nodig het. Vir Spring Security 6.5 se reaktiewe client_credentials-vloei, stel die reaktiewe tokenkliënt en sy toekenningsverskaffer afsonderlik op.

Legacy-voorbeelde wat OAuth2RestTemplate en AccessTokenProvider gebruik, behoort aan die ouer Spring Security OAuth-projek. Kies die API wat die geïnstalleerde toepassing gebruik voordat jy kode aanpas; moenie daardie objekte in hierdie konfigurasie meng nie.

Verwante artikels