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 ಆಯ್ಕೆಮಾಡಿ; ಆ ವಸ್ತುಗಳನ್ನು ಈ ಸಂರಚನೆಗೆ ಬೆರೆಸಬೇಡಿ.