ब्राउझर ओळख प्रदात्यापर्यंत पोहोचतो, नंतर ॲप्लिकेशन परत मिळालेला अधिकृतता कोड एक्सचेंज करते तेव्हा लॉगिन अयशस्वी होते. तो एक्सचेंज ॲप्लिकेशन सर्व्हरकडून बाहेर जाणारी विनंती आहे, तिचा स्वतःचा 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 निवडा; ते ऑब्जेक्ट या संरचनेत मिसळू नका.

संबंधित लेख