У меня проблема с Spring Boot 2 с приложением Spring Security 5, которое использует OAuth2 для авторизации пользователей. Вместо просмотра защищенной страницы пользователь перенаправляется обратно на экран авторизации.
Если я переключу провайдера OAuth2 на Google, я смогу правильно увидеть "/ securedPage"
Как избавиться от этого цикла перенаправления и увидеть "/ securedPage"?
Я настроил его так, чтобы была страница входа в систему, где пользователь нажимает кнопку «Войти» и перенаправляется на страницу входа сервера OAuth2. Пользователь может ввести учетные данные и перенаправлен на страницу авторизации, где пользователь может принять необходимую область. Затем браузер перенаправляется на «/ securedPage» на веб-сервере клиента OAuth2, но запрос перенаправляется обратно на сервер авторизации OAuth2.
Вот код моего клиента. Полный исходный код для клиента и сервера доступен по адресу: https://bitbucket.org/forestg83/spring-boot-oauth/src/master/
Starter.java
@SpringBootApplication
public class ClientApplication {
public static void main(String[] args) {
SpringApplication.run(ClientApplication.class, args);
}
}
OAuth2LoginConfig.java
@Configuration
@EnableOAuth2Sso
public class OAuth2LoginConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.antMatcher("/**")
.authorizeRequests()
.antMatchers("/", "/index**")
.permitAll()
.anyRequest() // other requests must be authenticated
.authenticated();
}
}
application.yml
server:
port: 80
servlet:
context-path: /ui
session:
cookie:
name: UISESSION
security:
basic:
enabled: false
oauth2:
client:
clientId: first-client
clientSecret: secret
accessTokenUri: http://localhost:8080/oauth/token
userAuthorizationUri: http://localhost:8080/oauth/authorize
preEstablishedRedirectUri: http://localhost/ui/securedPage
useCurrentUri: false
grantType: authorization_code
scope:
- read
tokenName: oauth_token
authenticationScheme: query
resource:
preferTokenInfo: false
userInfoUri: http://localhost:8080/user/me
# clientId: PASTE_YOUR_GOOGLE_CLIENT_ID
# clientSecret: PASTE_YOUR_CLIENT_SECRET
# accessTokenUri: https://oauth2.googleapis.com/token
# userAuthorizationUri: https://accounts.google.com/o/oauth2/v2/auth
# grantType: authorization_code
# scope:
# - https://www.googleapis.com/auth/calendar
# - profile
# - email
# tokenName: oauth_token
# authenticationScheme: query
# clientAuthenticationScheme: form
# resource:
# preferTokenInfo: false
# userInfoUri: https://www.googleapis.com/oauth2/v3/userinfo
Вот пример цикла перенаправления: Цикл перенаправления между авторизацией и securedPage
Вторая часть цикла перенаправления: перенаправление из / securedPage