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)까지 폭넓게 지원해요.
언어·프레임워크에 맞는 라이브러리를 고르면 보안 취약점이 이미 패치된 상태로 시작할 수 있어요. 무턱대고 직접 구현하기보다 검증된 목록을 사용하는 게 안전해요.
주요 라이브러리 예시
- 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.
각 라이브러리는 Sign과 Verify 기능에 추가로 위에서 언급한 클레임 검증 체크를 제공해요. 예를 들어 exp check를 켜면 만료 검증, aud check를 켜면 대상 검증이 자동으로 이뤄져요. 알고리즘 지원 범위는 라이브러리마다 달라서 뽑을 때 확인해요.
보안 주의
jwt.io는 일부 라이브러리에 대해 "Minimum version" 이라는 최소 권장 버전을 함께 표기해요. 예를 들어 특정 라이브러리(f.e. benmcollins/libjwt)는 Minimum version 3.4.0 이상을 권장해요. 이는 알려진 심각한 취약점(Critical Vulnerabilities in JSON Web Token Libraries)이 패치된 버전을 쓰라는 의미예요. 라이브러리를 고를 땐 반드시 최신 패치 버전을 확인하고, 사용 중인 라이브러리의 보안 공지도 주기적으로 확인해요.