JWT는 (에) : JSON 웹 토큰을 인식

JWT는 무엇입니까?

JSON 웹 토큰 (JWT)는 컴팩트하고 독립적 인 방식으로, JSON 객체로 당사자 간의 정보의 안전한 전송을 정의하는 개방형 표준 (RFC 7519)입니다. 이 정보는 디지털 서명을 통해 확인하고 신뢰 할 수 있습니다. JWT를 키 (조합 HMAC 알고리즘)을 사용하거나 RSA, ECDSA 공개 서명에 대한 개인 키를 사용하여 암호화 될 수있다.

JWT를 또한 당사자간에 안전한 암호화를 제공 할 수 있습니다,하지만 여전히 토큰 서명에 초점을 맞추고 있지만. 상대방이 암호화 토큰의 문장의 일부를 숨길 때, 토큰 서명 문의 무결성을 확인할 수 있습니다. 토큰 서명 공개 키와 개인 키 쌍을 사용하는 경우 때, 서명 만 개인 파티의 소지를 발행 파티 증명할 수 있습니다.

때 JWT를 사용 하는가?

  • 승인 : JWT이의 가장 일반적인 사용 시나리오입니다. 사용자가 로그온 할 때, 모든 요청은 액세스에 대한 액세스, 서비스, 자원 토큰을 가지고 만 경로를 사용자를 허용, JWT를 포함한다. JWT 작은 크기와는 다른 도메인 이름 사이에 사용할 수 있기 때문에 지금은 하나의 사인에, JWT 광범위하게 사용합니다.
  • 정보 교환 : JWT는 당사자 사이의 정보의 안전한 전송에 좋은 방법입니다. JWT를 할 서명되므로, 공개 키와 개인 키 쌍의 사용, 당신은 보낸 사람의 신원을 확인할 수 있습니다. 또한, 서명은 헤더와 페이로드에서 사용하여 계산됩니다, 그래서 당신은 내용이 변경되었음을 확인할 수 있습니다.

JWT 구조

JWT는 점 사이의 세 부분을 포함한다. () 파티션

  • 헤더 (헤드)
  • 페이로드 (부하)
  • 서명 (서명)

전형적인 JWT는 다음과 같습니다 :

xxxxx.yyyyy.zzzzz

부호화 jwt3.png

다음은이를 도입

헤더 부분은 JSON 객체 헤더는 일반적으로 두 부분을 포함하고있다 :

  • alg: 예컨대 RSA 또는 HMAC SHA256 같은 서명 알고리즘,

  • typ: 같은 JWT 같은 토큰 유형,

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

마지막 Base64Url JSON 객체 부호화 후, JWT의 첫 부분

유효 탑재량

페이로드 부분 JSON 객체는 데이터를 저장하는 데 사용된다. JWT는 일곱 공식 필드가

* iss (issuer):签发人
* exp (expiration time):过期时间,以秒为单位
* iat (Issued At):签发时间,能够算出JWT的存在时间
* nbf (Not Before):生效时间
* jti (JWT ID):JWT 的唯一标识。用来防止 JWT 重复。
* sub (subject):主题(很少使用)
* aud (audience):token的受众(很少被使用)

위의 필드 추가는 또한 다음과 같은 민간 필드를 사용자 정의 할 수 있습니다

{
    "userId": "1101",
    "userName": "张三",
    "age": "23"
}

JWT의 마지막 Base64Url JSON 객체 인코딩 한 후, 제 2 부분

팁 : JWT의 기본이 암호화되지 않은, 사람이 읽을 수 있도록 암호화하지 않는 한,이 섹션에 저장된 민감한 정보를 넣지 마십시오.

서명

서명의 일환으로, 지정된 알고리즘 헤더 헤더, 페이로드, 세 부분 문자열 키 서명 생성을 사용.
이러한 SHA256 HMAC 알고리즘을 사용하는 것과

HMACSHA256( 
    Base64Url.encode(header) + "." + Base64Url.encode(payload),
    secret
)

서명 데이터가 변경되었는지를 확인하기 위해 사용되며, 토큰이 개인 키 서명을 사용하는 경우, 서명은 JWT 전송자의 신원을 확인할 수있다.

어떻게 JWT를 사용 하는가?

JWT 클라이언트는 쿠키에 저장 될 수있는 서버 반환, 또한 로컬 스토리지에 저장 될 수있다받습니다.

그 후, 클라이언트가 서버를 요청할 때마다, 그것은 JWT을 가지고해야합니다. 쿠키는 자동 변속기 내부에 넣을 수 있지만, 더 나은 방법은 HTTP 요청 헤더 넣어 그래서 이것은 크로스 도메인을하지 않습니다 Authorization필드 내부.

Authorization: Bearer <token>

또 다른 방법은 교차 도메인은 JWT POST는 내부의 데이터 량을 요구할 때이다.

JWT 기능

  1. JWT의 기본값은 암호화되지 않습니다뿐만 아니라 암호화 할 수 있습니다. 원래의 토큰을 생성 한 후, 한 번 키를 재 암호화 할 수있다.
  2. 암호화하지 않고 JWT 경우는, 비밀 데이터는 JWT에 쓸 수 없습니다.

  3. JWT뿐만 아니라 인증에 사용할 수 있습니다, 그것은 또한 정보를 교환 할 수 있습니다. JWT의 효과적인 사용은 서버의 수는 데이터베이스가 감소 될 수있다 쿼리합니다.
  4. JWT 가장 큰 단점은 서버가 세션 상태를 저장하지 않기 때문에, 토큰이 과정에서 폐지 또는 토큰의 권한을 변경할 수없는 그이다. 서버가 추가 로직을 배포하지 않는 즉, 발행 JWT되면, 만기까지 유효합니다.
  5. JWT 자체는 공개 할 때 인증 정보, 사람이 토큰의 모든 권한을 얻을 수 있습니다 포함되어 있습니다. 도난을 줄이기 위해 JWT의 유효 기간은 비교적 짧은 설정해야합니다. 더 중요한 권리의 일부를 들어, 다시 한 번 사용하는 동안 사용자를 인증한다.
  6. 도난을 줄이기 위해 JWT는 HTTPS 프로토콜을 사용하는 HTTP 프로토콜 전송 코드를 사용하지 않아야합니다.

세션 쿠키 방법 : 클라이언트 요청이 쿠키 캐리 SESSION_ID를 사용할 때마다 서버에 따른 다른 세션의 SESSION_ID 구별 할

JWT 방식 : 요청 헤더를 사용하여 클라이언트 요청이 토큰을 나른다 때마다, 다른 사용자를 구별하기 위해 따라 토큰 서버

JWT의 공식 웹 사이트 소개

추천

출처www.cnblogs.com/lhat/p/12018567.html