node 에서 jwt 서명 및 token 검증 방법 사용
token 은'영패'라 는 뜻 으로 서버 에서 생 성 된 문자열 로 클 라 이언 트 가 요청 한 표지 입 니 다.
token 은 서버 에서 생 긴 것 입 니 다.전단 에서 사용자 이름과 비밀 번 호 를 사용 하여 서버 에 인증 요청 을 보 내 면 서버 인증 이 성공 하면 서버 에서 token 을 전단 으로 되 돌려 줍 니 다.
전단 은 요청 할 때마다 token 을 가지 고 자신의 합 법 적 인 지 위 를 증명 할 수 있 습 니 다.만약 token 이 서버 에서 지속 된다 면,그 는 영원한 신분 영패 이다.
2.jwt 란 무엇 인가
jwt,즉 JSON Web Token 의 줄 임 말 은 개방 기준(RFC 7519)으로 각 분야 에서 JSON 대상 으로 정 보 를 안전하게 전송 하 는 치밀 하고 독립 적 인 방식 을 정의 했다.
jwt 는 세 부분 으로 구성 되 어 있 으 며,그것들 사 이 를 나 누 어 사용 합 니 다.보통 다음 과 같 습 니 다 xxxx.yyyy.zzzzz.
첫 번 째 부분 은 Header 이 고 두 부분 으로 구성 되 며 유형 과 알고리즘,예 를 들 어
{
"alg": "HS256", //
"typ": "JWT" //
}
두 번 째 부분 은 Payload 로 실제 전달 해 야 할 데 이 터 를 저장 합 니 다.JWT 는 선택 할 수 있 도록 7 개의 공식 필드 를 규정 했다.예 를 들 면:
{
iss (issuer):
exp (expiration time):
sub (subject):
aud (audience):
nbf (Not Before):
iat (Issued At):
jti (JWT ID):
}
공식 필드 를 제외 하고 이 부분 에서 개인 필드 를 정의 할 수 있 습 니 다.다음은 하나의 예 입 니 다.
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
token 에 대해 서 는 이 정 보 는 변경 되 는 것 을 방지 할 수 있 지만 누구나 읽 을 수 있 습 니 다.암호 화 되 지 않 는 한 비밀 정 보 를 JWT 의 Payload 나 Header 요소 에 넣 지 마 세 요.세 번 째 부분 은 Signature 이 고 Signature 부분 은 앞 두 부분 에 대한 서명 으로 데이터 변경 을 방지 합 니 다.
우선 키(secret)를 지정 해 야 합 니 다.이 키 는 서버 에서 만 알 수 있 으 며 사용자 에 게 누설 할 수 없습니다.그리고 Header 에서 지정 한 서명 알고리즘(기본 값 HMAC SHA 256)을 사용 하여 아래 공식 에 따라 서명 합 니 다.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
서명 을 계산 한 후 Header,Payload,Signature 세 부분 을 하나의 문자열 로 맞 추고 각 부분 간 에'점'(.)으로 구분 하면 사용자 에 게 되 돌아 갈 수 있 습 니 다.3.node 로 token 서명 발송
우선 jwt 의존 패 키 지 를 다운로드 해 야 합 니 다.
npm install jsonwebtoken
그리고 파일 에서 사용 합 니 다.
var jwt = require('jsonwebtoken')
const payload = {
name: 'boom'
}
const secret = 'JQREAD'
const token = jwt.sign(payload, secret) //
console.log(token)
jwt.sign(payload, secret)
을 사용 하면 token 을 서명 하고 전단 으로 돌아 갈 수 있 습 니 다.전단 은 되 돌아 온 token 을 localstorage 나 sessionstorage 에 저장 합 니 다.4.노드 인증 토 큰 사용
사용자 가 로그 인 을 완료 하고 token 을 가 져 와 저장 한 후,요청 할 때마다 배경 에 token 을 요청 머리 에 놓 습 니 다.예 를 들 어:
const guestToken = getStorage('token')
if (guestToken) {
config.headers['X-GuestToken'] = guestToken
}
그리고 백 스테이지 에서 token 을 검증 합 니 다.
var token = req.headers['x-guesttoken']
const secret = 'JQREAD' // secret
jwt.verify(token, secret, (err, decoded) => {
if(err){
console.log(err)
return
}
console.log(decoded)
}
인증 에 실패 하면 Invalid Signature 가 출력 됩 니 다.인증 이 성공 하면 발급 할 때의 payload 데 이 터 를 인쇄 한 후에 계속 조작 하여 데 이 터 를 되 돌려 줄 수 있 습 니 다.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 node 에서 jwt 서명 과 token 을 검증 하 는 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Djoser로 인증Django 인증 시스템의 REST 구현. djoser 라이브러리는 Django Rest Framework 보기 세트를 제공하여 등록, 로그인, 로그아웃, 비밀번호 재설정 및 계정 활성화와 같은 기본 작업을 처리합니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.