బ్రౌజర్ గుర్తింపు ప్రదాతను చేరుకుంటుంది, ఆ తర్వాత అప్లికేషన్ తిరిగి వచ్చిన అనుమతి కోడ్‌ను మార్పిడి చేసినప్పుడు లాగిన్ విఫలమవుతుంది. ఆ మార్పిడి అప్లికేషన్ సర్వర్ నుండి బయటకు వెళ్లే అభ్యర్థన, దానికి స్వంత 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 ను ఎంచుకోండి; ఆ వస్తువులను ఈ కాన్ఫిగరేషన్‌లో కలపవద్దు.

సంబంధిత వ్యాసాలు