백엔드 REST API 레이어인 단일 Spring Boot 애플리케이션 내에서 두 개의 다른 웹 애플리케이션에서 오는 인증 토큰의 유효성을 검사하기 위해 두 개의 서로 다른 인증 서버(Okta 인스턴스 두 개)를 사용해야 한다는 요구 사항이 있습니다.
현재 다음 구성으로 작업하는 리소스 서버가 하나 있습니다.
@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-security-oauth2-resource-server
및 spring-security-oauth2-jose
내 Spring Boot 앱(버전 2.2.4.RELEASE)
내가 원하는 최종 상태는 요청에 설정된 사용자 지정 HTTP 헤더에 따라 Spring Boot 앱이 JWT 토큰을 디코딩하고 유효성을 검사하는 데 사용하는 Okta 인스턴스를 선택하려는 것입니다.
이상적으로는 구성 파일에 다음과 같은 두 가지 속성이 있습니다.
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
Security 구성에서 헤더 값을 일치 시키기 위해 a를 사용할 수 있어야 합니다. 내가 연습할 수 없는 것은 oauth2ResourceServer
Security 구성과 함께 제공되는 두 가지 다른 인스턴스를 사용하는 방법입니다.