日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JWT协议学习笔记

發布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JWT协议学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

官方 https://jwt.io

英文原版 https://www.ietf.org/rfc/rfc7519.txt 或 https://tools.ietf.org/html/rfc7519

中文翻譯 https://www.jianshu.com/p/10f5161dd9df

?

1. 概述

JSON Web Token(JWT)是一種緊湊的、URL安全的方法用來表示

在兩個部分之間的傳輸聲明. 通常由2種實現: JWS=JSON Web Signature,JWE=JSON Web Encryption。實際上JWT包含了一個大家族。

https://tools.ietf.org/html/rfc7515 = JWS

https://tools.ietf.org/html/rfc7516 =JWE

https://tools.ietf.org/html/rfc7517 = JWK

https://tools.ietf.org/html/rfc7518 = JWA

https://tools.ietf.org/html/rfc7519 = JWT

https://tools.ietf.org/html/rfc7520 =JOSE

?

2.定義

JWS

?

JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures.

JSON Web Signature (JWS)表示使用基于JSON的數據結構用數字簽名或消息身份驗證代碼(MACS)保護的內容。

JWE

JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures.

JSON Web Encryption(JWE)表示基于JSON數據結構的加密內容。

JWK

A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key.

JSON Web Key(JWK)是一個表示加密密鑰的JSON數據結構。

JWA

This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications.

本規范注冊了密碼算法和標識符。用于JSON Web簽名(JWS)、JSON Web加密

(JWE)和json web key(JWK)規范。

?

仔細扣字眼去理解以上文縐縐的定義,可以發現 JW(*)家族并不是同級關系。

舉個不是很恰當的例子:

一個json:

{"action":"8點進攻"},

對這個json做數字簽名,用然后用 內容 || "." || 簽名 的格式包裝

{"action":"8點進攻"}.eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9

這個就是JWS

?

對這個json

{"action":"8點進攻"}

{"action":"8點進攻"}.eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9

加密,形成

05kLzcSr4qKAq7YN7e9jwQRb23

這個就是JWE.

?

以上例子說明JSE和JSW的核心區別是一個簽名(數據沒有被篡改,來源是真實),一個加密(明文無法被第三者知曉)。一般把JSE作為多JWT的實現用來做網站的請求驗證。

?

?

3.結構

?

?

格式

例子,注意標點 . 的存在

JWS

BASE64URL(UTF8(JWS Protected Header)) || '.' ||

BASE64URL(JWS Payload) || '.' ||

BASE64URL(JWS Signature)

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9

.

eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ

.

dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

JWE

BASE64URL(UTF8(JWE Protected Header)) || '.' ||

BASE64URL(JWE Encrypted Key) || '.' ||

BASE64URL(JWE Initialization Vector) || '.' ||

BASE64URL(JWE Ciphertext) || '.' ||

BASE64URL(JWE Authentication Tag)

eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ.

OKOawDo13gRp2ojaHV7LFpZcgV7T6DVZKTyKOMTYUmKoTCVJRgckCL9kiMT03JGe

ipsEdY3mx_etLbbWSrFr05kLzcSr4qKAq7YN7e9jwQRb23nfa6c9d-StnImGyFDb

Sv04uVuxIp5Zms1gNxKKK2Da14B8S4rzVRltdYwam_lDp5XnZAYpQdb76FdIKLaV

mqgfwX7XWRxv2322i-vDxRfqNzo_tETKzpVLzfiwQyeyPGLBIO56YJ7eObdv0je8

1860ppamavo35UgoRdbYaBcoh9QcfylQr66oc6vFWXRcZ_ZT2LawVCWTIy3brGPi

6UklfCpIMfIjf7iGdXKHzg.

48V1_ALb6US04U3b.

5eym8TW_c8SuK0ltJ3rpYIzOeDQz7TALvtu6UG9oMo4vpzs9tX_EFShS8iB7j6ji

SdiwkIr3ajwQzaBtQD_A.

XFBoMYUZodetZdvTiFvSkQ

JWK

?

{"kty":"EC",

"crv":"P-256",

"x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",

"y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0",

"kid":"Public key used in JWS spec Appendix A.3 example"

}

轉載于:https://my.oschina.net/u/2382040/blog/3042605

總結

以上是生活随笔為你收集整理的JWT协议学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。