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ни тандаңыз; бул объектилерди бул конфигурацияга аралаштырбаңыз.