카테고리 없음

JWT 핸드북 요약 및 한글 번역

do_hyuk 2024. 5. 14. 22:48

1. 소개

  • JSON Web Token (JWT): 공간이 제한된 환경에서 클레임을 안전하게 전달하기 위한 표준.
  • 주요 특징: 간단함, 컴팩트함, 사용성.
  • 역사: 2011년 JOSE 그룹이 JWT, JWS, JWE, JWK, JWA RFC를 개발.

2. 실용적인 응용

  • 클라이언트 측 세션: 서명 및 암호화를 통해 세션 데이터를 보호.
  • 연합 신원: OAuth2 및 OpenID Connect와 함께 사용.
  • 예시: 쇼핑 카트 애플리케이션에서 JWT를 사용하여 클라이언트 측 상태 관리.

3. JWT의 세부 사항

  • 헤더: JWT 자체에 대한 정보를 포함.
  • 페이로드: 사용자 데이터 및 등록된 클레임 포함.
  • 서명되지 않은 JWT: 서명이나 암호화 없이 사용 가능하지만 드물게 사용됨.

4. JSON 웹 서명 (JWS)

  • 구조: 헤더, 페이로드, 서명으로 구성.
  • 서명 알고리즘: HS256, RS256, ES256 등.
  • 서명 및 검증: 서명을 통해 데이터의 무결성을 확인.

5. JSON 웹 암호화 (JWE)

  • 구조: 보호된 헤더, 암호화된 키, 초기화 벡터, 암호화된 데이터, 인증 태그로 구성.
  • 암호화 알고리즘: RSA, AES, ECDH 등.
  • 암호화 및 복호화: 데이터를 암호화하여 제3자가 읽을 수 없도록 보호.

6. JSON 웹 키 (JWK)

  • 구조: 키 유형, 사용, 알고리즘, 키 ID 등을 포함.
  • JWK 세트: 여러 키를 그룹화하여 사용.

7. JSON 웹 알고리즘

  • 일반 알고리즘: Base64-URL, SHA-256 등.
  • 서명 알고리즘: HMAC, RSA, ECDSA 등.
  • 암호화 알고리즘: AES, RSA, ECDH 등.

8. 현재의 모범 사례

  • 알고리즘 검증: 항상 명시적으로 알고리즘을 검증.
  • 적절한 알고리즘 사용: 시나리오에 맞는 알고리즘 선택.
  • 모든 검증 수행: 모든 JWT 레이어를 검증.
  • 암호화 입력 검증: 모든 입력을 검증하여 공격 방지.
  • 강력한 키 선택: 충분히 길고 무작위성이 높은 키 사용.
  • 모든 클레임 검증: 가능한 모든 클레임을 검증.
  • 토큰 유형 분리: typ 클레임을 사용하여 토큰 유형 분리.
  • 각 토큰에 대한 다른 검증 규칙 사용: 각 토큰에 대해 명확하고 구체적인 검증 규칙 설정.

결론

JWT는 강력한 도구이지만, 올바르게 사용하지 않으면 보안 취약점이 발생할 수 있습니다. 모범 사례를 따르고, 검증된 라이브러리를 사용하며, 모든 클레임과 알고리즘을 철저히 검증하는 것이 중요합니다.