Я использую Spring Boot и Dex в качестве сервера авторизации Oauth2, оба работают локально (Dex работает на http://localhost:5556)
Это мой application.yml раздел безопасности:
security:
oauth2:
client:
provider:
dex:
authorization-uri: http://localhost:5556/dex/auth
token-uri: http://localhost:5556/dex/token
jwk-set-uri: http://localhost:5556/dex/keys
registration:
dex:
client-id: sample-app
client-secret: ZXhhbXBsZS1hcHAtc2VjcmV0
client-name: Sample App
scope: openid
authorization-grant-type: authorization_code
redirect-uri: http://localhost:8085/my-api/login/oauth2/code/dex
а это моя цепочка фильтров:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login/oauth2/code/dex").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login();
}
}
Когда я открываю браузер и ввожу одну из конечных точек GET Spring Boot, я вижу страницу входа в Dex, запрашивающую имя пользователя и пароль. Ввожу их, нажимаю «Войти» и вижу кнопку «Предоставить доступ». Нажимаю и вижу ответ конечной точки.
Но последующие запросы к конечным точкам не содержат никаких токенов-носителей. Разве после авторизации в заголовках не должен быть токен?
Хотя с браузером все в порядке (только для запросов GET), я все равно не могу получить ответ конечной точки в Postman, он всегда перенаправляется на страницу входа, как я описал выше, даже если токен носителя находится в заголовках (я следую руководству по токену Postman Oauth2)
Добавление заголовка Grant_type (со значением Authorization_code) не помогает
UPD. Добавлено следующее, как было предложено в комментариях, но запросы по-прежнему не содержат токенов в заголовках:
security:
oauth2:
resourceserver:
jwt:
issuer-uri: http://localhost:5556/dex
jwk-set-uri: http://localhost:5556/dex/keys
UPD. Добавление JwtAuthenticationConverter приводит к исключению во время выполнения:
Exception in thread "main" java.lang.AbstractMethodError: Receiver class org.springframework.boot.env.EnvironmentPostProcessorApplicationListener does not define or inherit an implementation of the resolved method 'abstract boolean supportsSourceType(java.lang.Class)' of interface org.springframework.context.event.SmartApplicationListener.
at org.springframework.context.event.GenericApplicationListenerAdapter.supportsSourceType(GenericApplicationListenerAdapter.java:79)
at org.springframework.context.event.AbstractApplicationEventMulticaster.supportsEvent(AbstractApplicationEventMulticaster.java:290)
at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:222)
at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:193)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:128)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:122)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:85)
at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:66)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120)
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:65)
at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:338)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:296)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290)
at my.samples.api.geo.GeoApiApplication.main(GeoApiApplication.java:18)
Подробнее здесь: https://stackoverflow.com/questions/789 ... login-page
Spring Boot - Oauth2 всегда перенаправляется обратно на страницу входа ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Успешный вход в систему Asp.net Identity перенаправляется обратно на страницу входа
Anonymous » » в форуме C# - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-
-
-
После успешного пользователя входа не перенаправляется обратно в приложение
Anonymous » » в форуме Android - 0 Ответы
- 0 Просмотры
-
Последнее сообщение Anonymous
-