【发布时间】:2026-01-05 21:25:02
【问题描述】:
我需要使用两个不同的授权服务器(两个 Okta 实例)来验证来自单个 Spring Boot 应用程序中两个不同 Web 应用程序的身份验证令牌,该应用程序是一个后端 REST API 层。
目前我有一个资源服务器使用以下配置:
@Configuration
@EnableWebSecurity
public class ResourceServerSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception{
http
.authorizeRequests().antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
.and()
.oauth2ResourceServer().jwt();
}
}
spring.security.oauth2.resourceserver.jwt.issuer-uri=https://dev-X.okta.com/oauth2/default
spring.security.oauth2.resourceserver.jwt.jwk-set-uri=https://dev-X.okta.com/oauth2/default/v1/keys
在我的 Spring Boot 应用程序(版本 2.2.4.RELEASE)中具有依赖项 spring-security-oauth2-resource-server 和 spring-security-oauth2-jose
我想要进入的最终状态是,根据请求中设置的自定义 HTTP 标头,我想选择我的 Spring Boot 应用程序使用哪个 Okta 实例来解码和验证 JWT 令牌。
理想情况下,我的配置文件中有两个属性,如下所示:
jwkSetUri.X=https://dev-X.okta.com/oauth2/default/v1/keys
jwtIssuerUri.X=https://dev-X.okta.com/oauth2/default
jwkSetUri.Y=https://dev-Y.okta.com/oauth2/default/v1/keys
jwtIssuerUri.Y=https://dev-Y.okta.com/oauth2/default
我应该能够使用RequestHeaderRequestMatcher 来匹配安全配置中的标头值。我不能锻炼的是如何使用两个不同的oauth2ResourceServer 实例来配合安全配置。
【问题讨论】:
标签: spring spring-boot spring-security oauth-2.0 spring-security-oauth2