Spring Security 6.5: דורכפירן דעם OAuth אויטאריזאציע-קאד אויסטויש דורך א פראקסי
גיט דעם טאקן-ענטפער קליענט פונעם אויטאריזאציע-קאד אין Spring Security א פראקסי-באוואוסטן RestClient, און האלט זיינע OAuth קאנווערטערס און פעלער-באהאנדלער.
דער בלעטערער דערגרייכט דעם אידענטיטעט-סאַפּלייער, דערנאָך שלאָגט פֿעל דאָס אַרײַנלאָגירן ווען די אַפּלאַקיישאַן טוישט אויס דעם צוריקגעגעבענעם אויטאריזאציע-קאד. דער אויסטויש איז אַרויסגענדעריקע בקשה פונעם אַפּלאַקיישאַן סערווער, מיט איר אייגענעם HTTP קליענט.
פֿאַר דער RestClient-באזירטער API וואָס איז פֿאַראַן אין Spring Security 6.5, גיט דעם טאקן-ענטפער קליענט פונעם אויטאריזאציע-קאד אַ פראקסי-באוואוסטן בקשה-פֿאַבריק:
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-רופֿן קענען ניצן אַנדערע קליענט-אָביעקטן. קאָנפיגורירט דעם צוגעפּאַסטן געשטיצטן קליענט ווען יענע אָפּעראַציע דאַרף אויך די רוטע. פֿאַר דעם רעאַקטיוון client_credentials-שטראָם פֿון Spring Security 6.5, קאָנפיגורירט דעם רעאַקטיוון טאקן-קליענט און זיין געבן-סאַפּלייער באַזונדער.
עלטערע ביישפּילן מיט OAuth2RestTemplate און AccessTokenProvider געהערן צום עלטערן Spring Security OAuth פּראָיעקט. קלייבט די API וואָס די אינסטאַלירטע אַפּליקאַציע ניצט איידער איר פּאַסט אָן קאָד; מישט נישט די אָביעקטן אין דער קאָנפיגוראציע.