중요: 이 라이브러리는 토큰의 유효성을 검사하지 않으며, 올바른 형식의 JWT는 디코딩될 수 있습니다. express-jwt, koa-jwt, Microsoft.AspNetCore.Authentication.JwtBearer 등을 사용하여 서버 측 논리에서 토큰의 유효성을 검사해야 합니다.
문서 - 시작하기 - 피드백
NPM 또는 Yarn을 사용하여 설치합니다.
npm install jwt-decode
또는 yarn add jwt-decode
실행하여 라이브러리를 설치합니다.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJ0eXAiO.../// jwt token" ;
const decoded = jwtDecode ( token ) ;
console . log ( decoded ) ;
/* prints:
* {
* foo: "bar",
* exp: 1393286893,
* iat: 1393268893
* }
*/
// decode header by passing in options (useful for when you need `kid` to verify a JWT):
const decodedHeader = jwtDecode ( token , { header : true } ) ;
console . log ( decodedHeader ) ;
/* prints:
* {
* typ: "JWT",
* alg: "HS256"
* }
*/
참고: 허위이거나 잘못된 토큰은 InvalidTokenError
오류를 발생시킵니다. 특정 오류에 대한 자세한 내용은 아래를 참조하세요.
이 라이브러리는 모든 최신 브라우저와 지원되는 모든 노드 환경에서 사용할 수 있는 전역 함수인 atob()
을 사용합니다.
atob()
에 액세스할 수 없는 환경(예: React Native)에서 jwt-decode
사용하려면 core-js/stable/atob
사용하여 애플리케이션에 해당 폴리필을 제공해야 합니다.
import "core-js/stable/atob" ;
또는 base-64
및 폴리필 global.atob
직접 사용할 수도 있습니다.
import { decode } from "base-64" ;
global . atob = decode ;
이 라이브러리는 유효한 JSON 웹 토큰과 함께 작동합니다. 이 토큰의 기본 형식은 다음과 같습니다.
[part1].[part2].[part3]
모든 부분은 유효한 base64(url)로 인코딩된 json이어야 합니다. { header: <option> }
옵션에 따라 파트 1(header: true가 지정된 경우에만) 또는 파트 2(기본값)를 디코딩합니다.
형식을 준수하지 않으면 다음 메시지 중 하나와 함께 InvalidTokenError
가 발생합니다.
Invalid token specified: must be a string
=> 전달된 토큰이 문자열이 아닙니다. 이 라이브러리는 문자열에서만 작동합니다.Invalid token specified: missing part #
=> 토큰에 점( .
)이 누락되었음을 의미할 수 있습니다.Invalid token specified: invalid base64 for part #
=> 해당 부분을 base64로 디코딩할 수 없습니다(메시지에는 base64 디코더에서 발생한 오류가 포함되어야 함).Invalid token specified: invalid json for part #
=> 해당 부품은 올바르게 base64로 디코딩되었지만 디코딩된 값은 유효한 JSON이 아닙니다(메시지에는 JSON 구문 분석기가 제공한 오류가 포함되어야 함). jwtDecode
함수의 반환 유형은 두 번째 인수로 전달된 객체의 header
속성에 따라 결정됩니다. 생략하거나 false로 설정하면 JwtPayload
사용하고, true이면 JwtHeader
사용합니다. 필요한 경우 jwtDecode
함수에 유형 인수를 전달하여 예상되는 반환 유형을 지정할 수 있습니다.
비표준 클레임이나 속성을 포함하도록 JwtHeader
와 JwtPayload
모두 확장할 수 있습니다.
import { jwtDecode } from "jwt-decode" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode < JwtPayload > ( token ) ; // Returns with the JwtPayload type
const { jwtDecode } = require ( 'jwt-decode' ) ;
...
build/esm
폴더의 루트에 있는 jwt-decode.js
파일을 프로젝트 어딘가에 복사한 다음, type="module"
로 표시된 스크립트 태그 내에서 jwtDecode
가져옵니다.
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
이 저장소에 대한 피드백과 기여에 감사드립니다! 시작하기 전에 다음을 참조하십시오.
피드백을 제공하거나 버그를 보고하려면 문제 추적기에 문제를 제기해 주세요.
공개 GitHub 문제 추적기에 보안 취약점을 보고하지 마세요. 책임 공개 프로그램은 보안 문제 공개 절차를 자세히 설명합니다.
Auth0은 구현하기 쉽고 적응 가능한 인증 및 권한 부여 플랫폼입니다. 자세한 내용을 확인하려면 왜 Auth0인가요?
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.