偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

聊聊NET之JWT理解

開發(fā) 后端
jwt是一個基于json的、用于在網(wǎng)絡(luò)上聲明某種主張的令牌,jwt通常是用三部分組成:頭信息,消息體,簽名。他是一種雙方之間傳遞安全信息的表述性聲明規(guī)范。主要用于集群分布式中。

[[410562]]

開篇語

本文內(nèi)容參考多位大佬的文章編寫而成。

介紹

jwt是一個基于json的、用于在網(wǎng)絡(luò)上聲明某種主張的令牌,jwt通常是用三部分組成:頭信息,消息體,簽名。他是一種雙方之間傳遞安全信息的表述性聲明規(guī)范。主要用于集群分布式中。

作用:可以做權(quán)限驗證的使用,是一種標(biāo)準化的數(shù)據(jù)傳輸規(guī)范,但是目的不是為了數(shù)據(jù)加密和保護。

使用場景

  • 授權(quán):用于授權(quán)而并非是身份驗證。通過身份驗證,我們驗證用戶的用戶名和密碼是否有效,并將用戶登錄到系統(tǒng)中,通過授權(quán),我們可以驗證發(fā)送到服務(wù)器的請求是否屬于通過身份驗證登錄的用戶,從而可以授予該用戶訪問系統(tǒng)的權(quán)限,繼而批準該用戶使用獲取的token訪問路由、服務(wù)和資源。
  •  
  • 信息交換:json web token是在雙方之間安全地傳輸信息的一種好方法。因為jwt可以被簽名,所以使您能夠確保發(fā)送方是他們聲稱的那一方,由于簽名使用header和payload計算的,因此還使您能驗證發(fā)送的內(nèi)容沒有被篡改。

對比token+redis

JWT就是Json Web Token,就是Token的典型方式。JWT和Token+Redis的區(qū)別,其實都是Token,只是JWT的可靠性保障是來源于加密算法(對稱加密和非對稱兩種),而Token+Redis的方案是依靠的后臺數(shù)據(jù)存儲。這兩個本質(zhì)也就帶來了使用上的區(qū)別:

1 JWT是去中心化的,不需要任何后臺數(shù)據(jù)的共享,第三方認證、跨數(shù)據(jù)中心認證、微服務(wù)等,都適合采用JWT的方式,當(dāng)然,因為是去中心化的,不是實時驗證,所以本質(zhì)上來說token的主動過期是做不到的(要做到就會違背初衷)

2 Token+Redis是中心化的,要能識別token必須能訪問該Redis,除非是有特別需求,要求每次token都實時檢測,否則的話還是選擇JWT,畢竟是成熟通用的技術(shù),溝通維護成本也低,對開發(fā)者也友好一些。

這點我忘記是摘錄哪個大佬的文章了,所以沒有給出引用地址很抱歉。

流程

用戶通過登錄去向服務(wù)系統(tǒng)發(fā)起請求,然后生成帶一定用戶信息的數(shù)據(jù)作為令牌(jwt)返回給用戶,用戶拿到返回過來的信息在請求接口的時候放入頭部,服務(wù)系統(tǒng)會從頭部獲取到令牌后驗證簽名的有效性,對客戶端做出相應(yīng)的響應(yīng)。

 

  1. Authorization: Bearer <token> 

如果想在接口中獲取jwt令牌,可以使用

  1. var tokenHeader = HttpContext.Request.Headers["Authorization"].ToString().Replace("Bearer """); 

現(xiàn)在感覺作用就是可以通過jwt實現(xiàn)權(quán)限,在系統(tǒng)中定義好有哪些權(quán)限,然后在方法頭部去設(shè)置哪些角色可以去訪問這個東西。如果存放token,我的想法是把用戶的信息放到j(luò)wt內(nèi)部,然后前端通過登錄去獲取這東西,然后我返回這個東西到前臺,每次調(diào)用接口時候把這個東西傳出過來,然后我通過將這個解密獲取到我登錄時候存進去的信息。然后進行我自己的操作。

注意:

生成jwt時候的key必須在16位以上,否則會因為長度不夠拋出異常

jwt本身是不加密的,里面包含的信息任何人都可以讀取到。

jwt的簽名部分是對前兩部分的簽名,防止數(shù)據(jù)被篡改,

Bearer認證

Bearer認證(也叫做令牌認證)是一種HTTP認證方案,其中包含的安全令牌的叫做Bearer Token。因此Bearer認證的核心是Token。那如何確保Token的安全是重中之重。一種方式是使用Https,另一種方式就是對Token進行加密簽名。而JWT就是一種比較流行的Token編碼方式。

驗證

  1. //全局增加配置 
  2. services.AddControllers((options) => 
  3.     options.Filters.Add(new AuthorizeFilter());//添加全局的Authorize 
  4. }); 
  5.  
  6.  
  7. //控制器或者方法增加配置 
  8. [Authorize] 

原理

  • 獲取token
  • 第一步:對token進行切割
  • 第二步:對第二段解碼,獲取payload,檢測token是否超時
  • 第三步:把前兩段拼接再次執(zhí)行HS256加密,把加密后的密文和第三段比較。如果相等,認證通過

參考文檔

曉晨:https://www.cnblogs.com/stulzq/p/7417548.html

 

老張的哲學(xué):https://www.cnblogs.com/laozhang-is-phi/category/1413402.html

 

責(zé)任編輯:武曉燕 來源: 鵬祥
相關(guān)推薦

2021-06-08 09:28:12

.Net通知服務(wù)

2021-02-07 09:05:56

微服務(wù)結(jié)構(gòu)云原生

2023-08-09 09:11:57

算法分發(fā)效果

2025-02-20 08:18:12

JWTWeb分布式

2025-05-21 09:51:11

.NETJWTWeb

2024-09-09 07:37:51

AspJWT權(quán)限

2021-07-14 06:45:49

Windows.NetTopshelf

2024-01-22 10:18:32

平臺工程開發(fā)人員技術(shù)

2022-12-28 08:16:16

metric聚合java

2025-04-01 12:00:00

gRPC分布式系微服務(wù)

2023-07-12 13:08:58

性能測試數(shù)據(jù)

2024-03-11 10:21:53

.NET9調(diào)用FCall

2022-01-10 11:28:55

數(shù)據(jù)結(jié)構(gòu)算法DP入門

2020-05-27 08:05:33

MybatisMapper接口

2021-03-02 06:00:05

Docker.NET 5 Dockerfile

2021-01-27 05:28:38

工具RestSharpHTTP

2021-02-19 06:54:33

配置系統(tǒng)ASP.NET Cor

2024-10-08 10:11:57

2025-03-07 00:11:00

JWTJSONSession

2022-03-01 17:16:16

數(shù)倉建模ID Mapping
點贊
收藏

51CTO技術(shù)棧公眾號