બ્રાઉઝર ઓળખ પ્રદાતા સુધી પહોંચે છે, પછી એપ્લિકેશન પરત મળેલ ઑથરાઇઝેશન કોડનું એક્સચેન્જ કરે ત્યારે લોગિન નિષ્ફળ જાય છે. તે એક્સચેન્જ એપ્લિકેશન સર્વર તરફથી બહાર જતી વિનંતી છે, જેનો પોતાનો 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 વાપરે છે તે પસંદ કરો; તે ઑબ્જેક્ટને આ ગોઠવણીમાં ભેળવશો નહીં.

સંબંધિત લેખો