Вход на основе токена сервера авторизации Spring вместо входа в форму

Я пытаюсь реализовать сервер авторизации OAuth2, используя Spring Boot 3 (Spring Authorization Sever)

Когда клиент пытается получить код авторизации с сервера, он перенаправляется на форму входа. Но я хочу, чтобы сервер вместо этого выбирал токен из файлов cookie и проверял его на внешней системе, а в случае успеха отправлял обратно код авторизации.

Я попытался удалить вход на основе формы, но, поскольку приложение настроено на требование аутентификации для каждого запроса к серверу, я получал сообщение «Запрещено», и это правильно. Но вместо того, чтобы сразу отправлять запрещенную ошибку, я хочу, чтобы она проверила токен, полученный в файлах cookie.

У меня настроены эти 2 компонента цепочки фильтров.

          @Bean
    @Order(1)
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        OAuth2AuthorizationServerConfiguration.applyDefaultSecurity(http);
        return http.getConfigurer(OAuth2AuthorizationServerConfigurer.class)
                .oidc(Customizer.withDefaults())
                .and()
                .exceptionHandling(e -> e.authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login")))
                .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
                .build();
    }

    @Bean
    @Order(2)
    public SecurityFilterChain appSecurityFilterChain(HttpSecurity http) throws Exception {
        return http.formLogin(Customizer.withDefaults()).authorizeHttpRequests((authorize -> authorize.anyRequest().authenticated())).build();
    }

Я тестирую поток кода авторизации для OAuth2 с помощью Postman. Когда я пытаюсь получить токен доступа с помощью почтальона, он отправляет запрос/oauth2/authorizeконечная точка, которая затем перенаправляется на страницу входа. После отправки учетных данных на странице входа токен генерируется успешно.

Я хочу пропустить эту страницу входа и вместо использования этой страницы входа для аутентификации я хочу, чтобы сервер использовал проверку токена для аутентификации. То есть я хочу, чтобы он получил токен (из файлов cookie, заголовков и т. д.) и проверил его, и если токен действителен, то предоставил код авторизации, токен доступа и т. д.

Интересно, как мне поступить? Не нашел много статей на эту тему...

0 ответов

Другие вопросы по тегам