<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
TokenProvider 리팩토링# 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
private_key.pem .gitignore 등록JWT_PRIVATE_KEY · JWT_PUBLIC_KEY 등록JWT_SECRET 환경변수 제거v /home/ubuntu/app/keys:/app/keys:ro