22장. API는 JWT를 발급하기보다 먼저 제대로 검증한다
Spring Security Resource Server는 JWT Bearer token의 signature, exp, nbf, iss를 검증하고 scope를 SCOPE_ authority로 매핑할 수 있다. JWT Resource Server 공식 문서는 Boot 설정에 issuer와 audience를 지정하는 방법을 제공한다.
spring:
security:
oauth2:
resourceserver:
jwt:
issuer-uri: https://id.example.test
audiences: https://api.contracthub.example
signature가 맞는 것만으로 충분하지 않다. iss는 누가 발급했는지, aud는 이 API를 위한 token인지, 시간 claim은 현재 유효한지 확인한다. 허용 알고리즘을 고정하고 none이나 예상 밖 대칭 알고리즘으로 내려가지 않는다. JWK key ID가 없거나 중복되거나 회전 중일 때의 실패도 테스트한다.
애플리케이션이 자체 JWT 발급 서버를 즉석 구현하지 않는다. 조직의 검증된 Authorization Server나 관리형 IDP를 쓰고, 발급 책임이 정말 필요하면 key custody, rotation, client 관리, consent, revocation, incident response 역량을 먼저 평가한다.