成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文讀懂JWT

開發
JWT(JSON Web Token)是目前最流行的跨域認證解決方案,是一種基于Token的認證授權機制。此外JWT還被廣發應用于單點登陸及信息交換。

Labs 導讀

我們在做應用系統時避免不了用戶的認證授權,說簡單點就是:認證你是誰,授權你有什么權限。在這里先來談談用戶的認證,目前常用的認證方式有兩種:基于session認證、基于token認證。

Part 01、  JWT是什么?  

JWT(JSON Web Token)是一個開放的行業標準(RFC 7519),自身包含了身份驗證所需要的所有信息,因此我們的服務器不需要存儲用戶Session信息。這顯然增加了系統的可用性和伸縮性,大大減輕了服務端的壓力。可以看出JWT更符合設計RESTful API時的Stateless(無狀態)原則。并且使用JWT認證可以有效避免CSRF攻擊,因為JWT一般是存在在localStorage中,使用JWT進行身份驗證的過程中是不會涉及到Cookie的。

Part 02、  JWT由哪些部分組成? 

圖片圖片

JWT本質上是一組字串,通常是這樣的:xxxxx.yyyyy.zzzzz,通過(.)切分成三個為Base64編碼的部分:

  • Header:描述JWT的元數據,定義了生成簽名的算法以及Token的類型。
  • Payload:用來存放實際需要傳遞的數據。
  • Signature:服務器通過Payload、Header和一個密鑰(Secret)

使用Header里面指定的簽名算法(默認是 HMAC SHA256)生成。

示例:

圖片圖片

可以通過https://jwt.io對上述JWT進行解碼,解碼之后便可得到Header、Payload、Signature這三部分。Header和Payload都是JSON格式的數據,Signature由Payload、Header和Secret(密鑰)通過特定的計算公式和加密算法得到。

圖片圖片

  • Header

通常由兩部分組成。

  • typ(Type):令牌類型,也就是JWT
  • alg(Algorithm):簽名算法,比如HS256

示例:

圖片圖片

JSON形式的Header被轉換成Base64編碼,成為JWT的第一部。

  • Payload

包含了三種類型的聲明。

  • Registered Claims(注冊聲明):預定義的一些聲明,建議使用,但不強制。
  • Public Claims(公有聲明):JWT簽發方可以自定義的聲明。
  • Private Claims(私有聲明):JWT簽發方因為項目需要而自定義的聲明。

下面是一些常見的注冊聲明:

  • iss(issuer):JWT 簽發方。
  • iat(issued at time):JWT簽發時間。
  • sub(subject):JWT主題。
  • aud(audience):JWT接收方。
  • exp(expiration time):JWT的過期時間。
  • nbf(not before time):JWT生效時間,早于該定義的時間的JWT不能被接受處理。
  • jti(JWT ID):JWT唯一標識。

示例:

圖片圖片

Payload部分默認是不加密的,一定不要將隱私信息存放在 Payload 當中!!!

JSON 形式的Payload被轉換成Base64編碼,成為JWT的第二部分。

  • Signature

對前兩部分的簽名,作用是防止JWT(主要是payload)被篡改。簽名的生成需要用到:Header+Payload、存放在服務端的密鑰(一定不要泄露出去)、簽名算法。簽名的計算公式如下:

圖片圖片

算出簽名以后,把 Header、Payload、Signature三個部分拼成一個字符串,每個部分之間用"點"(.)分隔,這個字符串就是JWT。

Part 03、 JWT如何進行用戶認證?

在基于JWT進行身份驗證的的應用程序中,服務器通過 Payload、Header和Secret(密鑰)創建JWT并將JWT發送給客戶端。客戶端接收到JWT之后,會將其保存在Cookie或者localStorage里面,以后客戶端發出的所有請求都會攜帶這個令牌。

圖片圖片

簡化后的步驟如下:

1.用戶向服務器發送用戶名、密碼以及驗證碼用于登陸系統。

2.如果用戶用戶名、密碼以及驗證碼校驗正確的話,服務端會返回已簽名的Token,也就是JWT。

3.用戶以后每次向后端發請求都在Header中帶上這個JWT。

4.服務端檢查JWT并從中獲取用戶相關信息。

兩點建議:

1.建議將JWT存放在localStorage中,放在Cookie中會有CSRF風險。

2.請求服務端并攜帶JWT的常見做法是將其放在HTTP Header的Authorization字段中(Authorization:Bearer Token)

Part 04、 JWT如何防止被篡改? 

服務器返回簽名之后,即使JWT被泄露或者截獲,黑客也沒辦法同時篡改Signature、Header、Payload。

這是為什么呢?因為服務端拿到JWT之后,會解析出其中包含的Header、Payload 以及Signature。服務端會根據Header、Payload、密鑰再次生成一個Signature。拿新生成的Signature和JWT中的Signature作對比,如果一樣就說明Header和Payload沒有被修改。

不過,如果服務端的秘鑰也被泄露的話,黑客就可以同時篡改Signature、Header、Payload了。黑客直接修改了Header和Payload之后,再重新生成一個Signature就可以了。

?注意:密鑰一定保管好,一定不要泄露出去。JWT安全的核心在于簽名,簽名安全的核心在密鑰。

Part 05、  JWT如何加強安全性?  

1.使用安全系數高的加密算法。

2.使用成熟的開源庫,沒必要造輪子。

3.JWT存放在localStorage中而不是Cookie中,避免CSRF風險。

4.一定不要將隱私信息存放在Payload當中。

5.密鑰一定保管好,一定不要泄露出去。JWT安全的核心在于簽名,簽名安全的核心在密鑰。

6.Payload要加入exp(JWT的過期時間),永久有效的JWT不合理。并且JWT的過期時間不易過長。

Part 06、  JWT有哪些優缺點?  

- 優點

1.無狀態:自身攜帶用戶信息,不需要在服務器上保存session信息。

2.可有效避免CSRF攻擊:CSRF攻擊需要依賴Cookie,然而JWT選擇存放在localStorage中,因此非法鏈接無法獲取JWT。 

- 缺點

1.不可控:就比如說,我們想要在JWT有效期內廢棄一個JWT或者更改它的權限的話,并不會立即生效,通常需要等到有效期過后才可以。再比如說,當用戶Logout的話,JWT也還有效。

Part 07、  JWT使用總結 

在“約定優于配置,配置優于編碼”的開發理念下,通過Apollo配置中心,程序員不需要每次更改線上配置都要重新發布服務,成功實現了將配置與編碼解耦,為線上服務變更配置提供了解決方案。


責任編輯:龐桂玉 來源: 移動Labs
相關推薦

2021-08-04 16:06:45

DataOps智領云

2018-09-28 14:06:25

前端緩存后端

2022-09-22 09:00:46

CSS單位

2022-11-06 21:14:02

數據驅動架構數據

2025-04-03 10:56:47

2023-11-27 17:35:48

ComponentWeb外層

2023-05-20 17:58:31

低代碼軟件

2022-07-05 06:30:54

云網絡網絡云原生

2022-07-26 00:00:03

語言模型人工智能

2022-12-01 17:23:45

2021-12-29 18:00:19

無損網絡網絡通信網絡

2022-10-20 08:01:23

2025-05-23 09:38:54

JWT開發Go

2020-12-30 09:05:24

架構微內核系統

2017-05-04 20:29:12

HTTP服務器TCP

2018-09-29 04:53:37

IoT網關物聯網IoT

2024-01-03 08:54:17

Kubernetes策略工具

2021-05-18 09:48:58

前端開發架構

2025-01-10 08:10:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品黄色 | 欧美亚洲视频 | 日韩手机在线视频 | 国产1区在线 | 免费视频一区二区三区在线观看 | 国产一级电影在线观看 | av一区二区三区在线观看 | 亚洲精品亚洲人成人网 | 欧美日韩一区二区三区在线观看 | 日本一区二区三区免费观看 | 中文字幕av在线一二三区 | 亚洲高清三级 | 国产精品久久国产精品 | 一区二区不卡视频 | 欧美精品久久久久 | 亚洲va在线va天堂va狼色在线 | 国产成人精品网站 | 国产二区视频 | 国产日韩精品在线 | 国产亚洲精品精品国产亚洲综合 | 国产精品久久国产精品99 | 国产成人精品网站 | 欧美激情欧美激情在线五月 | 免费一区在线观看 | 丝袜一区二区三区 | 欧美激情 亚洲 | 91精品国产乱码久久久久久 | 欧美在线看片 | 自拍偷拍亚洲一区 | 综合久久久 | 丁香综合 | 龙珠z国语版在线观看 | 在线观看特色大片免费网站 | 99re热精品视频国产免费 | 国产精品免费观看 | 正在播放国产精品 | 国产亚洲精品成人av久久ww | 国产精品久久国产精品99 gif | 亚洲淫视频| 天天拍夜夜爽 | 亚洲专区在线 |