欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

JWT中token的理解

今天我們來聊一聊關(guān)于JWT授權(quán)的事情。

成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元桂陽做網(wǎng)站,已為上家服務(wù),為桂陽各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792

JWT:Json Web Token。顧名思義,它是一種在Web中,使用Json來進行Token授權(quán)的方案。

既然沒有找好密碼,token是如何解決信任問題的呢?

解決信任問題,只需要解決兩個問題即可:

token是不是來自我信任的機構(gòu)頒發(fā)

token中的信息是否被篡改

對于第一個問題而言,確認(rèn)token確實是由被信任的第三方頒發(fā)的,一般都是通過加密算法來建立信任,頒發(fā)時使用密鑰進行加密,如果能夠?qū)用軆?nèi)容進行正常解密說明token來自信任方。常用的加密算法分為:

對稱可逆加密:使用同一個秘鑰來加密解密,如果token能解密就能證明來源,秘鑰不對外公開

非對稱可逆加密:使用一組秘鑰對(私鑰加密+公鑰解密),如果token能使用公鑰進行解密就能證明來源,公鑰與私鑰之間互相不可推算

優(yōu)缺點:

對稱可逆加密效率高,速度快,但是由于對稱可逆加密使用的是同一個秘鑰,所以必須向解密的應(yīng)用提供秘鑰,相對而言不安全,所以一般只用于內(nèi)部應(yīng)用之間。

非對稱可逆加密速度相對慢一些,但是加密時通過私鑰加密而解密時只需要提供公鑰即可,所以用于對外提供加密機制更加安全可靠,所以多用于向第三方提供加密服務(wù)時使用。

算法舉例:

HS256
HS256 (帶有 SHA-256 的 HMAC 是一種對稱算法, 雙方之間僅共享一個 密鑰。由于使用相同的密鑰生成簽名和驗證簽名, 因此必須注意確保密鑰不被泄密。

2 RS256
RS256 (采用SHA-256 的 RSA 簽名) 是一種非對稱算法, 它使用公共/私鑰對: 標(biāo)識提供方采用私鑰生成簽名, JWT 的使用方獲取公鑰以驗證簽名。由于公鑰 (與私鑰相比) 不需要保護, 因此大多數(shù)標(biāo)識提供方使其易于使用方獲取和使用 (通常通過一個元數(shù)據(jù)URL)。

JWT格式說明

JWT令牌格式 作用
Header { "alg": "HS256", "typ": "JWT"}
Payload 有效載荷 使用base64進行序列化,任何人都可以讀到,所以不要包含敏感信息
Signature 簽名

防止抵賴-防止篡改,一旦頭和有效載荷有內(nèi)容被篡改,則生成簽名部分必將與原內(nèi)容不同

=HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

JWT如何解決信任問題的呢?

將簽名部分使用秘鑰進行解密,如果可以正常解開,說明令牌來自信任方頒發(fā),將解密后的內(nèi)容與JWT的頭部和有效載荷的base64編碼內(nèi)容對比是否一致,如果一致,說明令牌未被篡改。也就解決了token信任的第二個問題。

算法實現(xiàn):

下面是使用上述的兩種加密算法生成的jwt

HS256算法實現(xiàn)

 1 public string GetToken(UserInfoDTO userInfo)
 2 {
 3     string secretKey = _configuration["SercetKey"];
 4     var signingCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)), SecurityAlgorithms.HmacSha256);
 5 
 6     var claims = new Claim[] {
 7         new Claim("id",userInfo.Id.ToString()),
 8         new Claim("age",userInfo.Age.ToString()),
 9         new Claim("name",userInfo.Name),
10         new Claim("mobile",userInfo.Mobile),
11         new Claim("email",userInfo.EMail),
12         new Claim("role",userInfo.Role),
13     };
14 
15     var token = new JwtSecurityToken(
16         issuer: _configuration["Issuer"], //發(fā)行人
17         audience: _configuration["Audience"], //受眾人
18         claims: claims,
19         expires: DateTime.UtcNow.AddMinutes(2),//60分鐘有效期
20         notBefore: DateTime.UtcNow.AddMinutes(1),//1分鐘后有效
21         signingCredentials: signingCredentials);
22     string returnToken = new JwtSecurityTokenHandler().WriteToken(token);
23     return returnToken;
24 }

當(dāng)前標(biāo)題:JWT中token的理解
瀏覽路徑:http://chinadenli.net/article42/dsoiohc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、網(wǎng)站制作、服務(wù)器托管、網(wǎng)站維護、App開發(fā)、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作