JWT 라이브러리

JWT 라이브러리 (Libraries)

jwt.io에는 JWT를 서명·검증하는 공식 인증 라이브러리 목록이 언어별로 정리돼 있어요. 지원하는 기능은 서명(Sign), 검증(Verify), 그리고 iss·sub·aud·exp·nbf·iat·jti·typ 같은 클레임 검증 체크로 나뉘어요. 알고리즘은 HS256/384/512, RS256/384/512, ES256/384/512, PS256/384/512, EdDSA(Ed25519·Ed448)를 넘어 최근엔 ML-DSA(44/65/87)까지 폭넓게 지원해요.

언어·프레임워크에 맞는 라이브러리를 고르면 보안 취약점이 이미 패치된 상태로 시작할 수 있어요. 무턱대고 직접 구현하기보다 검증된 목록을 사용하는 게 안전해요.

출처: https://jwt.io/libraries

주요 라이브러리 예시

  • JavaScript / TypeScript: panva/jose (npm docs jose) — HS·RS·ES·PS·EdDSA를 모두 지원하는 현대적인 표준 라이브러리.
  • Node (CommonJS): auth0/node-jsonwebtoken — 널리 쓰이는 전통적인 구현.
  • .NET: AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet, jwt-dotnet/jwt, dvsekhvalnov/jose-jwt, nuscien/trivial.
  • Java: auth0/java-jwt, connect2id/nimbus-jose-jwt 등.
  • Python: jpadilla/pyjwt — 널리 쓰이는 표준 구현.
  • Go: golang-jwt/jwt, lestrrat-go/jwx 등.
  • Ruby: jwt/ruby-jwt.
  • C++: Thalhammer/jwt-cpp, arun11299/cpp-jwt, benmcollins/libjwt, pocoproject/poco.
  • Swift: vapor/jwt-kit, kylef/JSONWebToken.swift, airsidemobile/JOSESwift.

각 라이브러리는 SignVerify 기능에 추가로 위에서 언급한 클레임 검증 체크를 제공해요. 예를 들어 exp check를 켜면 만료 검증, aud check를 켜면 대상 검증이 자동으로 이뤄져요. 알고리즘 지원 범위는 라이브러리마다 달라서 뽑을 때 확인해요.

보안 주의

jwt.io는 일부 라이브러리에 대해 "Minimum version" 이라는 최소 권장 버전을 함께 표기해요. 예를 들어 특정 라이브러리(f.e. benmcollins/libjwt)는 Minimum version 3.4.0 이상을 권장해요. 이는 알려진 심각한 취약점(Critical Vulnerabilities in JSON Web Token Libraries)이 패치된 버전을 쓰라는 의미예요. 라이브러리를 고를 땐 반드시 최신 패치 버전을 확인하고, 사용 중인 라이브러리의 보안 공지도 주기적으로 확인해요.

더 알아보기