ബ്രൗസർ ഐഡന്റിറ്റി പ്രൊവൈഡറിലെത്തുന്നു, തുടർന്ന് ആപ്ലിക്കേഷൻ തിരികെ ലഭിച്ച അധികാര കോഡ് കൈമാറുമ്പോൾ ലോഗിൻ പരാജയപ്പെടുന്നു. ആ കൈമാറ്റം ആപ്ലിക്കേഷൻ സെർവറിൽ നിന്ന് പുറത്തേക്കുള്ള അഭ്യർത്ഥനയാണ്, അതിന് സ്വന്തം 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 തിരഞ്ഞെടുക്കുക; ആ ഒബ്ജക്റ്റുകൾ ഈ കോൺഫിഗറേഷനിൽ കലർത്തരുത്.

അനുബന്ധ ലേഖനങ്ങൾ