프로젝트 소개
jwt-go는 RFC 7519에 정의된 JSON Web Token(JWT)을 구현하는 프로덕션 준비 완료된 Go 라이브러리입니다. JWT의 파싱, 검증, 생성, 서명을 포괄적으로 지원하여 Go 애플리케이션에서 인증 및 권한 부여의 기반 도구로 사용됩니다.
이 라이브러리는 HMAC SHA, RSA, RSA-PSS, ECDSA를 포함한 여러 서명 알고리즘을 지원하며, 사용자 정의 서명 방법을 추가할 수 있는 훅을 제공합니다. Semantic Versioning 2.0.0을 따르며 프로덕션 사용에 안정적입니다.
주요 기능은 다음과 같습니다:
- JWT 파싱 및 검증
- JWT 생성 및 서명
- HMAC SHA, RSA, RSA-PSS, ECDSA 서명 알고리즘 지원
- SigningMethod 인터페이스를 통한 사용자 정의 서명 방법을 허용하는 확장 가능한 아키텍처
- 타사 키 관리 서비스(GCP, AWS KMS, TPM, JWKS) 통합 지점
- 보안 중심 설계로 alg=none인 비보안 JWT는 명시적 동의가 필요
- 토큰 생성, 파싱, 디버깅을 위한 명령줄 유틸리티(cmd/jwt)
이 프로젝트는 원저자가 유지 관리를 오픈 소스 유지 관리자 전담 팀으로 이전할 것을 제안한 후 dgrijalva/jwt-go의 포크로 시작되었습니다. v4.0.0 버전은 v3.x.y 태그와의 하위 호환성을 유지하면서 Go 모듈 지원을 도입했습니다. v5.0.0 버전은 토큰 검증에 큰 개선을 가져왔지만 완전히 하위 호환되지는 않습니다.
이 라이브러리는 JWT 라이브러리의 심각한 취약점을 방지하기 위한 'alg' 매개변수 검증을 포함한 보안 모범 사례를 강조합니다. 또한 이전 Go 버전의 crypto/elliptic 패키지 보안 문제로 인해 Go 1.15 이상으로 업그레이드할 것을 권장합니다.
RFC 7519 준수는 한 가지 주목할 만한 차이점이 있습니다: alg=none을 사용하는 토큰은 jwt.UnsafeAllowNoneSignatureType 상수가 키로 제공된 경우에만 허용되어 비보안 JWT의 우발적 사용을 방지합니다.
이 프로젝트는 광범위한 문서, 예제, 전용 문서 웹사이트를 포함합니다. 또한 사용자 정의 서명 방법이나 키 함수를 추가하는 데 필요한 모든 구성 요소를 게시하여 클라우드 제공업체 통합 및 하드웨어 보안 모듈을 포함한 다양한 사용 사례에 고도로 확장 가능합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.