🚨 문제 상황

<aside>

BFF · Core 서버가 분리된 구조에서 초기에는 HS256 대칭 키 방식으로 JWT를 구현하였습니다. 그러나 BFF 서버에서도 토큰 검증이 필요한 상황이 발생하면서 문제가 드러났습니다.

🔍 문제 원인

<aside>

해결 과정

Private Key → Core 서버에서 토큰 서명
Public Key  → BFF · 외부 서비스에서 토큰 검증
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
# Before
Keys.hmacShaKeyFor(secret.getBytes())  // HS256 단일 Key

# After
// KeyFactory 기반 RSA 키 로딩
// 서명: privateKey + SignatureAlgorithm.RS256
// 검증: publicKey로 수행
# application-local.properties
jwt.private-key=classpath:keys/private_key.pem
jwt.public-key=classpath:keys/public_key.pem

# application-prod.properties
jwt.private-key=file:/app/keys/private_key.pem
jwt.public-key=file:/app/keys/public_key.pem