У меня есть служба весенней загрузки oauth2, работающая локально. Но когда я развертываю это в Heroku, это терпит неудачу с 401.
Итак, в моей локальной системе я захожу в пользовательский интерфейс, и у меня нет действительного JWT, поэтому он выполняет перенаправление на:
localhost:8080/api/auth/oauth/authorize?response_type=token&client_id=clienteagleeye&redirect_uri=http%3A%2F%2Flocalhost%3A4200&scope=webClient
Spring gateway направляется к моей службе аутентификации, localhost:8066/auth/login
. Я вхожу с действительным именем пользователя / паролем, и он направляется на localhost:8066/auth/validate
, что дает этот заголовок ответа:
Location: localhost:8066/auth/oauth/authorize?response_type=token&client_id=clienteagleeye&redirect_uri=http%3A%2F%2Flocalhost%3A4200&scope=webClient
Перенаправляет на:
localhost:8066/auth/oauth/authorize?response_type=token&client_id=clienteagleeye&redirect_uri=http%3A%2F%2Flocalhost%3A4200&scope=webClient
... и расположение заголовка ответа на этот вызов: localhost:4200#access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.etc...
Он направляется обратно в интерфейс, и у меня есть токен доступа. Все работает как положено.
Я делаю это в Heroku. Я перехожу к этому шагу аутентификации / проверки abc-authserver.herokuapp.com/auth/validate
, и расположение заголовка ответа Location: abc-authserver.herokuapp.com/auth/
.
Я ожидаю, что это будет:
abc-authserver.herokuapp.com/auth/oauth/authorize?response_type=token&client_id=clienteagleeye&redirect_uri=https%3A%2F%dummyui&scope=webClient
но это не так, он направляется к abc-authserver.herokuapp.com/auth/
, и я получаю 401.
Почему Heroku отбрасывает мою информацию response_type, client_id, scope и redirect_uri? Почему он изменяет расположение в заголовке ответа при проверке? Журналы показывают, что мои имя пользователя и пароль верны, и у меня есть информация. Он просто не знает, куда идти.
Это мой ресурсConfig в authservice ...
@Configuration
@EnableConfigurationProperties
public class ResourceConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.cors().and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.NEVER).and()
.authorizeRequests()
.antMatchers("/api/**", "/auth/**", "/oauth/**", "/login", "/validate").permitAll()
.and().formLogin()
.loginPage("/login").loginProcessingUrl("/validate")
.and()
.logout().and().httpBasic().and().authorizeRequests().anyRequest().authenticated();
}
}
Мне нужно выяснить, как не потерять информацию о перенаправлении. Я могу предоставить любую дополнительную информацию, необходимую. Я трачу кучу времени, пытаясь понять это. Буду признателен за любой вклад. Спасибо.