如何阻止 Heroku 更改位置标头并使用我的 Spring 引导 OAuth2 服务导致401?

共0个回答, 标签: java spring-boot heroku oauth-2.0

我有一个弹簧引导 oauth2 服务在本地工作。但是, 当我将此部署到 Heroku 时, 它将失败与 401。

因此, 在我的本地系统上, 我转到 UI, 我没有有效的 JWT, 因此它执行重定向到:

localhost:8080/api/auth/oauth/authorize?response_type=token&client_id=clienteagleeye&redirect_uri=http%3A%2F%2Flocalhost%3A4200&scope=webClient

春天的门户路由到我的身份服务, localhost:8066/auth/login 。我登录与有效的 username/password 密码, 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...

它路由回 UI, 我有访问令牌。一切都按预期工作。

我在 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 会删除我的响应类型、客户端 _ id、作用域和重定向 _ uri 信息?为什么在我验证时更改响应标头中的位置?日志显示我的用户名和密码是正确的, 我有信息。它只是不知道去哪里。

这是我在授权服务中的资源配置..。

@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();
    }
}

我需要想办法不丢失重定向信息。我可以提供所需的任何其他信息。我在浪费大量的时间试图解决这个问题。我希望能得到任何意见。谢谢。

相关问题

Java 是 "逐项传递" 还是 "按值传递"? 如何比较 Java 中的字符串? 什么是 Null Pointerexception, 我如何修复它? Spring Boot 2-在 bean 初始化之前做一些事情 为什么我在 pom.xml 的第一行遇到未知错误? 有条件地向 HashMap 添加项目的有效方法 TypeError: 无法读取未定义的 makeStyles.js 的属性 “附件” 将 Flask 应用程序部署到 Heroku 时出现奇怪的 “is_xhr” 错误 如何阻止 Heroku 更改位置标头并使用我的 Spring 引导 OAuth2 服务导致401? OAuth 与自定义 JWT 身份验证