>일반적인 문제 >JWT가 뭐야?

JWT가 뭐야?

coldplay.xixi
coldplay.xixi원래의
2020-10-30 10:56:129954검색

jwt는 약어일 뿐이며 전체 철자는 JSON Web Tokens입니다. 이는 널리 사용되는 도메인 간 인증 솔루션으로, 네트워크에서 특정 클레임을 선언하는 데 사용되는 JSON 기반 토큰입니다.

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"입니다.

다음 알고리즘일 수도 있습니다:

페이로드

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

JWT 공식 추천 필드:

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 암호화에서 다시 수행될 수도 있습니다.

JWT는

1을 사용합니다. 서버는 사용자의 로그인 상태에 따라 사용자 정보를 토큰으로 암호화하여 클라이언트에 반환합니다.

2.클라이언트는 서버가 반환한 토큰을 받아 쿠키에 저장합니다.

3, 클라이언트와 서버 간의 모든 통신은 다음과 같은 http 요청 헤더 정보에 배치될 수 있는 토큰을 가져옵니다.

4 서버는 토큰을 해독하고 콘텐츠를 확인하며 해당 작업을 완료합니다. logic

JWT 기능

JWT는 HTML 및 HTTP 환경에서 전달하기에 더 간결하고 적합합니다.

JWT는 활성화 이메일과 같은 일회성 확인에 적합합니다.

JWT가 적합합니다. 상태 비저장 인증용

  • JWT는 서버 측 CDN 콘텐츠 배포에 적합합니다.

  • 데이터베이스 세션 쿼리보다 시간이 더 절약됩니다.

  • JWT는 기본적으로 암호화되지 않습니다

  • 토큰을 취소하거나 변경할 수 없습니다. 사용 중 토큰 권한

  • JWT는 HTTPS 프로토콜을 사용하여 코드를 전송할 것을 권장합니다

위 내용은 JWT가 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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