>백엔드 개발 >PHP 문제 >JWT는 무엇을 합니까?

JWT는 무엇을 합니까?

Guanhui
Guanhui원래의
2020-06-28 16:23:494506검색

JWT는 현재 널리 사용되는 도메인 간 인증 솔루션입니다. 서버가 요청을 요청할 때마다 사용자 정보를 암호화하여 토큰의 정확성을 확인하기만 하면 됩니다. 세션 데이터를 저장할 필요가 없습니다.

JWT는 무엇을 합니까?

jwt 확인 방법은 사용자 정보를 암호화하여 토큰을 생성하는 것입니다. 서버가 요청될 때마다 저장된 키를 사용하여 토큰의 정확성을 확인하면 됩니다. 데이터 및 서버가 보이지 않는 상태가 되어 확장이 용이합니다. client :

{
    "username": "vist",
    "role": "admin",
    "expire": "2018-12-08 20:20:20"
}

token 클라이언트가 수신 한 것 :

7cd357af816b907f2cc9acbe9c3b4625

jwt 구조

a 토큰은 3 부분으로 나뉩니다.

서명(서명)
  • 3개 부분은 "."으로 구분됩니다. 예:
  • eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • Header

  • JWT의 헤더 부분은 메타데이터를 설명하는 JSON 개체입니다. 일반적으로 :

    {
      "typ": "JWT",
      "alg": "HS256"
    }

    typ은 다음과 같습니다. 선언 유형, "JWT" ​​지정 ​​
alg는 암호화 알고리즘이며 기본값은 "HS256"입니다.

load

페이로드는 전송해야 하는 실제 데이터를 저장하는 데 사용되는 데이터의 전달자입니다. JSON 객체이기도 합니다.

JWT 공식 추천 필드:

iss: jwt issuer

sub: jwt for users

aud: jwt를 받는 당사자
  • exp: jwt의 만료 시간, 이 만료 시간 반드시 발급 시간보다 커야 합니다
  • nbf: jwt를 사용할 수 없는 이전 시간을 정의합니다.
  • iat: jwt의 발급 시간
  • jti: jwt의 고유 ID, 주로 사용합니다. 재생 공격을 방지하기 위해 일회성 토큰으로 사용됩니다.
  • 다음과 같은 사용자 정의 필드를 사용할 수도 있습니다.
  • {
        "username": "vist",
        "role": "admin"
    }
  • Signature

  • 서명 부분은 데이터 변조를 방지하기 위한 처음 두 부분(헤더, 페이로드)의 서명입니다.

    생성하려면 다음 단계를 따르세요.
1. 먼저 비밀을 지정하세요.

2. 헤더와 페이로드 정보를 각각 base64로 변환하세요.

3. 마지막으로 서명 = HMACSHA256( base64UrlEncode(헤더) + "." + base64UrlEncode(페이로드), 비밀)

클라이언트가 얻은 서명:

header.payload.signature

JWT도 다시 암호화할 수 있습니다.

추천 튜토리얼: "

PHP

"

위 내용은 JWT는 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.