ਬ੍ਰਾਊਜ਼ਰ ਪਛਾਣ ਪ੍ਰਦਾਤਾ ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ, ਫਿਰ ਲੌਗਇਨ ਤਦ ਅਸਫਲ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਐਪਲੀਕੇਸ਼ਨ ਵਾਪਸ ਮਿਲਿਆ ਅਧਿਕਾਰ ਕੋਡ ਤਬਾਦਲਾ ਕਰਦੀ ਹੈ। ਉਹ ਤਬਾਦਲਾ ਐਪਲੀਕੇਸ਼ਨ ਸਰਵਰ ਤੋਂ ਬਾਹਰ ਜਾਣ ਵਾਲੀ ਬੇਨਤੀ ਹੈ, ਜਿਸ ਦਾ ਆਪਣਾ HTTP ਕਲਾਇੰਟ ਹੈ।

Spring Security 6.5 ਵਿੱਚ ਉਪਲਬਧ RestClient-ਅਧਾਰਿਤ API ਲਈ, ਅਧਿਕਾਰ ਕੋਡ ਟੋਕਨ ਜਵਾਬ ਕਲਾਇੰਟ ਨੂੰ ਪ੍ਰੌਕਸੀ-ਜਾਣਕਾਰ ਬੇਨਤੀ ਫੈਕਟਰੀ ਦਿਓ:

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

ਕਨਵਰਟਰ ਅਤੇ ਗਲਤੀ ਹੈਂਡਲਰ ਕਲਾਸਾਂ Spring Security ਦੇ ਦਸਤਾਵੇਜ਼ੀ ਟੋਕਨ ਬੇਨਤੀ ਵਿਵਹਾਰ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦੀਆਂ ਹਨ। ਸਿਰਫ਼ ਇੱਕ ਅਸੰਬੰਧਿਤ JSON API ਲਈ ਸੰਰਚਿਤ ਆਮ RestClient ਬਰਾਬਰ ਦਾ ਬਦਲ ਨਹੀਂ ਹੈ।

ਉਹੀ tokenClient ਮੌਜੂਦਾ ਸੁਰੱਖਿਆ ਸੰਰਚਨਾ ਵਿੱਚ ਜੋੜੋ:

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

ਇਹ ਸੰਰਚਨਾ ਟੁਕੜੇ ਇੱਕ ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਹਨ ਜਿਸ ਕੋਲ ਪਹਿਲਾਂ ਹੀ ਕਲਾਇੰਟ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਅਤੇ SecurityFilterChain ਹੈ। ਇਹ ਬਿਨਾਂ ਪ੍ਰਮਾਣਿਕਤਾ ਵਾਲੀ HTTP ਪ੍ਰੌਕਸੀ ਚੁਣਦੇ ਹਨ; ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਦੀ ਲੋੜ ਵਾਲੀ ਪ੍ਰੌਕਸੀ ਲਈ ਚੁਣੇ ਗਏ ਟ੍ਰਾਂਸਪੋਰਟ ਦੀ ਮੇਲ ਖਾਂਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਸੰਰਚਨਾ ਚਾਹੀਦੀ ਹੈ। ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਜਨਤਕ ਮਾਰਗ 'ਤੇ ਜਨਤਕ ਤੌਰ 'ਤੇ ਪਹੁੰਚਯੋਗ HTTPS ਟੋਕਨ ਐਂਡਪੌਇੰਟ ਲਈ, HTTP ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਤੋਂ HTTP ਐਂਟਰੀ ਉਸ ਖਾਤਾ-ਰਹਿਤ ਪ੍ਰੌਕਸੀ ਪਤੇ ਨੂੰ ਭਰ ਸਕਦੀ ਹੈ।

ਪ੍ਰੌਕਸੀ ਹੋਸਟ ਨੂੰ ਇਸ ਦੇ ਪੋਰਟ ਅਤੇ URL ਸਕੀਮ ਤੋਂ ਵੱਖ ਰੱਖੋ। ਪਛਾਣ ਪ੍ਰਦਾਤਾ ਦੇ ਟੋਕਨ URI ਨੂੰ ਮੰਜ਼ਿਲ ਰਹਿਣ ਦਿਓ। ਇਹ ਉਦਾਹਰਨ ਸਰਟੀਫਿਕੇਟ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਥਾਂ ਨਹੀਂ ਲੈਂਦੀ।

ਬਾਅਦ ਦੀਆਂ ਬੇਨਤੀਆਂ ਨੂੰ ਆਪਣੀ ਮਾਲਕੀ ਜਾਂਚ ਚਾਹੀਦੀ ਹੈ। UserInfo ਪ੍ਰਾਪਤੀ, ਰਿਫ੍ਰੈਸ਼ ਟੋਕਨ ਤਬਾਦਲੇ, client-credentials ਅਨੁਦਾਨ ਅਤੇ ਸੁਰੱਖਿਅਤ API ਕਾਲਾਂ ਹੋਰ ਕਲਾਇੰਟ ਵਸਤੂਆਂ ਵਰਤ ਸਕਦੀਆਂ ਹਨ। ਜਦੋਂ ਉਸ ਕਾਰਵਾਈ ਨੂੰ ਵੀ ਮਾਰਗ ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਸੰਬੰਧਿਤ ਸਮਰਥਿਤ ਕਲਾਇੰਟ ਸੰਰਚਿਤ ਕਰੋ। Spring Security 6.5 ਦੇ ਪ੍ਰਤੀਕਿਰਿਆਸ਼ੀਲ client_credentials ਪ੍ਰਵਾਹ ਲਈ, ਪ੍ਰਤੀਕਿਰਿਆਸ਼ੀਲ ਟੋਕਨ ਕਲਾਇੰਟ ਅਤੇ ਇਸ ਦੇ ਅਨੁਦਾਨ ਪ੍ਰਦਾਤਾ ਨੂੰ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਸੰਰਚਿਤ ਕਰੋ।

OAuth2RestTemplate ਅਤੇ AccessTokenProvider ਵਰਤਣ ਵਾਲੀਆਂ ਪੁਰਾਣੀਆਂ ਉਦਾਹਰਨਾਂ ਪੁਰਾਣੇ Spring Security OAuth ਪ੍ਰੋਜੈਕਟ ਦੀਆਂ ਹਨ। ਕੋਡ ਅਨੁਕੂਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਸਥਾਪਿਤ ਐਪਲੀਕੇਸ਼ਨ ਵੱਲੋਂ ਵਰਤੀ ਜਾਂਦੀ API ਚੁਣੋ; ਉਹ ਵਸਤੂਆਂ ਇਸ ਸੰਰਚਨਾ ਵਿੱਚ ਨਾ ਮਿਲਾਓ।

ਸੰਬੰਧਿਤ ਲੇਖ