Я пытаюсь переписать существующую службу авторизации OAuth2, используя Spring Boot 3.0.2
и недавно выпущенную Spring OAuth2 Authorization Server 1.0.0
.
Столкнулся с проблемой расчесывания объектов из библиотек Reactive Security и Standard Security: невозможно применить защиту по умолчанию к классу OAuth2AuthorizationServerConfiguration
, потому что она не применима к реактивной ServerHttpSecurity
.
Кодовая часть
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SecurityWebFilterChain authServerSecurityFilterChain(ServerHttpSecurity http) throws Exception {
OAuth2AuthorizationServerConfiguration.applyDefaultSecurity(http);
http
.formLogin()
...;
return http.build();
}
Не могу передать HttpSecurity
методу applyDefaultSecurity()
.
Пытался найти реактивные реализации класса OAuth2AuthorizationServerConfiguration
, но ничего не нашел.
Есть ли способ преобразовать ServerHttpSecurity
в HttpSecurity
? Или Spring OAuth2 Authorization Server полностью несовместим с реактивным подходом?
Основные зависимости Maven pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-authorization-server</artifactId>
<version>1.0.0</version>
</dependency>
Спасибо заранее.
УПД
Плохо искал. Похоже, это еще не поддерживается:
https://github.com/spring-projects/spring-authorization-server/issues/152
Или есть еще какие-то способы заставить его работать?
Официальный ответ:
Мы строго сосредоточены на реализации сервлета для начального набора функций, которые соответствуют версии MVP. На данный момент мы еще не решили, будем ли мы предоставлять версию WebFlux.
Честно говоря, я не уверен, что это необходимо. Клиент и сервер(ы) ресурсов являются наиболее активными, тогда как сервер авторизации не так активен, поскольку он просто выдает токен и может проверять токен, что является ограниченной активностью между многими взаимодействиями, которые следуют между клиентом и сервером ресурсов. после выпуска токена.
В любом случае, я собираюсь закрыть этот вопрос, поскольку на данный момент WebFlux не входит в планы.
Источник - https://github.com/spring-projects/spring-authorization-server/issues/152