멀티테넌트 JWKS 캐싱 지원 기법

멀티테넌트 환경에서 JWKS를 캐싱할 때 핵심은 테넌트별 독립 캐시 키, 테넌트별 TTL 차등 적용, 캐시 오염 방지, 동적 테넌트 등록을 어떻게 처리하느냐입니다. Spring Security + Caffeine 조합으로 이 네 …

자세히보기

JWKS 캐시 프리페치와 백그라운드 리프레시 설정

Spring Security에서 JWKS 캐시 프리페치(애플리케이션 시작 시 미리 적재)와 백그라운드 리프레시(만료 직전 비동기 갱신)를 구현하려면, 커스텀 Cache 래퍼와 @Scheduled 태스크를 조합하는 것이 현실적인 최선입니다. Spring 자체는 프리페치/백그라운드 리프레시를 공식 지원하지 않지만, Caffeine의 refreshAfterWrite와 …

자세히보기

Spring Security RemoteJWKSet 캐싱 설정 예제

Spring Security에서 RemoteJWKSet 캐싱 설정을 하려면, 최신 방식은 NimbusJwtDecoder.withJwkSetUri(…).cache(…)에 Spring Cache를 주입하는 것입니다. 구버전이나 세밀한 TTL 제어가 필요하면 Nimbus의 RemoteJWKSet과 DefaultJWKSetCache를 직접 구성할 수도 있습니다. 최신 방식 Spring Security 5.4+에서는 NimbusJwtDecoder.JwkSetUriJwtDecoderBuilder.cache(…) 메서드로 …

자세히보기

RemoteJWKSet과 jose 라이브러리 차이점

RemoteJWKSet과 jose 라이브러리는 완전히 다른 차원의 개념입니다. 핵심은 RemoteJWKSet은 Java(Nimbus)의 JWKS 조회 메커니즘, jose는 Node.js의 종합 JOSE 라이브러리라는 점입니다. 한눈에 보는 차이 구분 RemoteJWKSet jose 라이브러리 정체 Java 클래스 …

자세히보기

Spring Security 6.x RemoteJWKSet TTL 설정 방법

Spring Security 6.x에서는 NimbusJwtDecoder.withJwkSetUri(…).cache(…) 메서드를 사용해 Spring Cache 기반 JWKS 캐시를 주입하는 방식이 공식이며, TTL은 주입하는 Cache 구현체에서 제어합니다. 핵심 구조 Spring Security 6.x의 NimbusJwtDecoder.JwkSetUriJwtDecoderBuilder는 cache(org.springframework.cache.Cache cache) 메서드를 제공하며, 이 캐시를 통해 JWK Set을 …

자세히보기

Spring Security RemoteJWKSet TTL 증가 예제

Spring Security에서 RemoteJWKSet TTL을 늘리는 가장 쉬운 방법은 NimbusJwtDecoder.withJwkSetUri(…).cache(…)를 사용해 Spring Cache를 주입하는 것입니다. 이 방식은 Spring Security 5.4부터 공식적으로 지원되며, JWK Set 저장용 캐시를 직접 지정할 수 …

자세히보기

MCP 서버에 OAuth2와 JWT 적용 방법

MCP 서버에 OAuth2와 JWT를 적용하려면 핵심은 MCP 서버를 OAuth2 리소스 서버(Resource Server)로 두고, 외부 인증 서버가 발급한 JWT 액세스 토큰을 헤더에서 검증하도록 구성하는 것입니다. 실무에서는 여기에 scope 기반 …

자세히보기