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

面試官:說說JWT的執行原理?

開發 前端
JWT 執行流程:用戶登錄后生成加密令牌、客戶端存儲并在請求頭攜帶、服務端驗證簽名和過期時間后授權。它的優點包括無狀態、跨域支持、自包含性,適用于分布式系統和微服務架構,通過簽名確保數據安全。

JWT 在目前的項目開發中使用到的頻率是非常高的,因此它也是面試常問的一類問題,所以今天我們就來看看“項目中 JWT 的執行流程?”這個問題。

一、什么是 JWT?

JWT(JSON Web Token) 是一種開放標準(RFC 7519),用于在網絡應用間安全傳輸信息,通常用于身份驗證和信息交換。其核心特點是通過緊湊且自包含的 JSON 對象傳遞數據,無需服務端存儲會話狀態。

二、JWT組成

JWT 是由三部分組成的:

  • Header(頭部):通常由以下兩部分組成:

a.Token 類型:通常是 JWT。

b.加密算法:例如 HS256(HMAC SHA-256)、RS256(RSA SHA-256)等。

  • Payload(載荷) :JWT 的主體部分,通常為以下三類:
  • 標準聲明(Registered Claims):預定義的字段,如 iss(發行者)、exp (過期時間)、sub(主題)等。
  • 公共聲明(Public Claims):用戶自定義的字段,例如用戶 ID、用戶名、角色等。
  • 私有聲明(Private Claims):在特定場景下使用的字段,通常用于內部系統。
  • Signature(簽名):用于驗證 Token 的完整性和防止篡改。

它們之間用點“.”分隔,形成一個字符串(Token)。

三、執行流程

JWT 執行流程如下:

在 Spring Boot 項目中,JWT 的執行流程主要分為以下步驟:

1. 用戶登錄與令牌生成

  • 用戶通過用戶名和密碼發起登錄請求。
  • 服務端驗證用戶憑證,若驗證成功,則使用 JWT 工具類生成令牌:

a.Header:指定算法(如 HS256)和令牌類型(JWT)。

b.Payload:包含用戶信息(如用戶 ID、角色)和聲明(如過期時間 exp)。

c.Signature:使用密鑰對 Header 和 Payload 進行簽名,確保令牌不可篡改。

2. 客戶端存儲令牌

  • 服務端將生成的 JWT 返回給客戶端(通常通過響應體或 Header)。
  • 客戶端(如瀏覽器或移動端)將令牌存儲在本地(如 LocalStorage 或 Cookie)。

3. 請求攜帶令牌

  • 客戶端在后續請求的 Authorization Header 中以 Bearer格式攜帶 JWT。

4. 服務端驗證令牌

  • 攔截器/過濾器:Spring Boot 通過自定義攔截器或 Spring Security 過濾器鏈攔截請求,提取并驗證 JWT:

a.簽名驗證:使用密鑰校驗簽名是否有效。

b.過期檢查:檢查 exp 字段是否過期。

c.用戶信息提取:解析 Payload 中的用戶信息(如用戶 ID),用于后續權限控制。

5. 授權與響應

  • 若驗證通過,服務端處理請求并返回數據。
  • 若驗證失敗(如令牌過期或簽名錯誤),返回 401 狀態碼或自定義錯誤信息。

四、JWT核心實現代碼

// 生成 JWT(示例)|SECRET_KEY 為服務保存的密鑰。
public String generateToken(UserDetails user) {
return Jwts.builder()
.setSubject(user.getUsername())
.setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000))
.signWith(SignatureAlgorithm.HS256, SECRET_KEY)
.compact();
}

// 驗證 JWT(示例)
public boolean validateToken(String token) {
    try {
        Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token);
        returntrue;
    } catch (Exception e) {
        returnfalse;
    }
}

注意事項

  • 密鑰安全:簽名密鑰需妥善保管,并定期修改,避免泄露。
  • 無狀態性:JWT 無需服務端存儲會話信息,適合分布式系統。

五、JWT 優點分析

JWT 相較于傳統的基于會話(Session)的認證機制,具有以下優勢:

  • 無需服務器存儲狀態:傳統的基于會話的認證機制需要服務器在會話中存儲用戶的狀態信息,包括用戶的登錄狀態、權限等。而使用 JWT,服務器無需存儲任何會話狀態信息,所有的認證和授權信息都包含在 JWT 中,使得系統可以更容易地進行水平擴展。
  • 跨域支持:由于 JWT 包含了完整的認證和授權信息,因此可以輕松地在多個域之間進行傳遞和使用,實現跨域授權。
  • 適應微服務架構:在微服務架構中,很多服務是獨立部署并且可以橫向擴展的,這就需要保證認證和授權的無狀態性。使用 JWT 可以滿足這種需求,每次請求攜帶 JWT 即可實現認證和授權。
  • 自包含:JWT 包含了認證和授權信息,以及其他自定義的聲明,這些信息都被編碼在 JWT 中,在服務端解碼后使用。JWT 的自包含性減少了對服務端資源的依賴,并提供了統一的安全機制。
  • 擴展性:JWT 可以被擴展和定制,可以按照需求添加自定義的聲明和數據,靈活性更高。

小結

JWT 執行流程:用戶登錄后生成加密令牌、客戶端存儲并在請求頭攜帶、服務端驗證簽名和過期時間后授權。它的優點包括無狀態、跨域支持、自包含性,適用于分布式系統和微服務架構,通過簽名確保數據安全。

責任編輯:姜華 來源: 磊哥和Java
相關推薦

2024-11-19 15:13:02

2023-12-27 18:16:39

MVCC隔離級別幻讀

2024-08-22 10:39:50

@Async注解代理

2024-03-05 10:33:39

AOPSpring編程

2024-03-14 14:56:22

反射Java數據庫連接

2024-12-06 07:00:00

2024-07-31 08:28:37

DMAIOMMap

2024-02-29 16:49:20

volatileJava并發編程

2024-03-11 18:18:58

項目Spring線程池

2024-09-20 08:36:43

零拷貝數據傳輸DMA

2024-03-22 06:56:24

零拷貝技術數據傳輸數據拷貝

2024-08-12 17:36:54

2024-08-29 16:30:27

2021-06-29 09:47:34

ReactSetState機制

2025-02-28 00:00:00

2024-06-04 09:02:03

2021-06-07 17:12:22

線程安全Atomic

2024-03-28 10:37:44

IoC依賴注入依賴查找

2024-09-12 08:35:06

2024-03-01 11:33:31

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美日韩一区 | 国产精品永久在线观看 | 日韩欧美三区 | 亚洲精选久久 | 在线日韩 | 北条麻妃一区二区三区在线视频 | 日本在线看片 | 午夜免费精品视频 | 国产成人精品一区二 | 在线视频国产一区 | 中文字幕一区二区三区在线观看 | 午夜国产羞羞视频免费网站 | 色站综合| 午夜男人的天堂 | 99精品国产一区二区青青牛奶 | 夜夜爽99久久国产综合精品女不卡 | 亚洲精品免费看 | 亚洲综合资源 | 免费午夜视频在线观看 | 亚洲日本中文字幕在线 | 99免费| 亚洲美乳中文字幕 | 国产精品视频久久 | 超碰97人人人人人蜜桃 | 国产一区精品 | 91九色porny首页最多播放 | 本地毛片 | 欧美一级在线观看 | 亚洲精品一区中文字幕 | 国产精品一区二区三 | 国产精品久久久久久网站 | 色综合色综合网色综合 | 黑人成人网 | 亚洲高清视频一区二区 | 99久久久久久久 | 欧美日韩成人在线 | 91精品在线播放 | 国产成人99久久亚洲综合精品 | 91在线看片 | 久草院线| 日本高清视频在线播放 |