我们正在通过公司的 Okta 服务器对 Spring Boot Web 应用程序实施授权。这个想法是允许用户登录公司的 Okta 仪表板,然后从那里单击我们的应用程序。但是,我们无法将用户重定向到我们的应用程序 API 调用。我们在 Okta 应用程序上有以下配置:
登录重定向 URI:https://backend-web-api.com/authorization-code/callback
登录发起者:Okta 或 APP
登录流程:重定向到应用程序以启动登录(符合OIDC)
启动登录 URI:https://backend-web-api.com/user/authorize
我们有带有 /user/authorize 的控制器,但请求没有重定向到我们在启动登录 URI 请求中提到的该控制器
我们正在使用 Okta spring Boot starter (2.1.7)、Spring boot starter 父版本 2.7.3 和以下安全配置代码
public SecurityFilterChain configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS).permitAll()
.antMatchers("/resources/**", "/registration").permitAll()
.antMatchers("/user/authorize*").authenticated()
.and()
.logout().logoutSuccessUrl("/").permitAll()
.and()
.oauth2Client()
.and()
.oauth2Login();
http.oauth2Login(Customizer.withDefaults());
http.oauth2ResourceServer(oauth2-> oauth2.jwt(Customizer.withDefaults()));
return http.build();
}
属性文件如下:
okta.oauth2.issuer=https://company-url.org/oauth2/default
okta.oauth2.client-id=####
okta.oauth2.client-secret=########
okta.oauth2.redirect-uri=/authorization-code/callback
以下是我们通过 Okta 仪表板单击应用程序链接时的网络选项卡。
我们是否遗漏了什么?或者我们没有遵循正确的步骤。请帮助我们,因为我们无法通过其他问题和在线研究找出答案。
我们能够解决这个问题。问题是多个服务器正在运行,并且来自 okta 的授权请求通过 ELB 传播到不同的实例,最终导致凭证无效。我们通过 StickySessions 启用了 ELB,然后问题就得到了解决。