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 نى تاللاڭ؛ بۇ ئوبيېكتلارنى بۇ تەڭشەككە ئارىلاشتۇرماڭ.