አሳሹ ወደ ማንነት አቅራቢው ይደርሳል፣ ከዚያም መተግበሪያው የተመለሰውን የፍቃድ ኮድ ሲለዋወጥ መግቢያው ይወድቃል። ያ ልውውጥ ከመተግበሪያ አገልጋዩ የሚወጣ ጥያቄ ነው፣ የራሱ የ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 ይምረጡ፤ እነዚያን ነገሮች በዚህ ውቅር ውስጥ አይቀላቅሉ።

ተዛማጅ ጽሑፎች