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 مستند شوي ټوکن غوښتنې چلند ساتي. یو عمومي RestClient چې یوازې د یوې بې اړیکې JSON API لپاره تنظیم شوی، مساوي بدیل نه دی.
هماغه 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 وټاکئ چې نصب شوی اپلیکیشن یې کاروي؛ هغه توکي په دې تنظیم کې مه ګډوئ.