Spring Security 6.5: OAuth அனுமதிக் குறியீட்டு பரிமாற்றத்தை ப்ராக்ஸி வழியாக அனுப்புதல்
Spring Security இன் அனுமதிக் குறியீடு டோக்கன் பதில் கிளையண்டிற்கு ப்ராக்ஸி அறிந்த RestClient வழங்குங்கள், அதன் OAuth மாற்றிகளையும் பிழை கையாளியையும் தக்கவைத்து.
உலாவி அடையாள வழங்குநரை அடைகிறது, பின்னர் பயன்பாடு திரும்பிய அனுமதிக் குறியீட்டைப் பரிமாறும்போது உள்நுழைவு தோல்வியடைகிறது. அந்தப் பரிமாற்றம் பயன்பாட்டு சேவையகத்திலிருந்து வெளியேறும் கோரிக்கை, அதற்கு சொந்த 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 ஐத் தேர்ந்தெடுக்கவும்; அந்தப் பொருட்களை இந்தக் கட்டமைப்பில் கலக்க வேண்டாம்.