Как мне остановить Heroku от изменения заголовка местоположения и запуска 401 с моей службой Spring OAuth2? - PullRequest
4 голосов
/ 01 апреля 2019

У меня есть служба весенней загрузки 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();
    }
}

Мне нужно выяснить, как не потерять информацию о перенаправлении. Я могу предоставить любую дополнительную информацию, необходимую. Я трачу кучу времени, пытаясь понять это. Буду признателен за любой вклад. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...