Base64URL과 JWT: 디코딩과 신뢰는 다릅니다
JWT는 일반 Base64가 아니라 Base64URL을 씁니다. 읽기와 검증을 나누어 보세요.
세 부분
서명된 JWT는 보통 header, payload, signature 세 부분을 점으로 연결합니다.
두 글자가 다릅니다
Base64URL은 +를 -, /를 _로 바꿉니다. JWT는 끝의 = 패딩도 생략합니다.
읽기는 검증이 아닙니다
payload에서 iss, sub, aud, exp를 읽을 수 있습니다. 하지만 서명과 발급자를 증명하지 않습니다. 서버가 올바른 키와 알고리즘으로 검증해야 합니다.
alg 주의
허용 알고리즘은 애플리케이션이 정합니다. 예상 밖의 alg 값은 실패로 처리해야 합니다.
디버그 흐름
점으로 나누고, 앞 두 부분을 Base64URL로 읽고, 필요하면 패딩을 더한 뒤 서명, issuer, audience, 시간을 확인합니다.