Браузер идентификация провайдеріне жетеді, содан кейін қосымша қайтарылған авторизация кодын айырбастағанда кіру сәтсіз аяқталады. Бұл айырбас қосымша серверінен шығатын сұраныс, оның өз 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-ді таңдаңыз; бұл нысандарды осы конфигурацияға араластырмаңыз.

Қатысты мақалалар