真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JWT中token的理解

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

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

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

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

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

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

token中的信息是否被篡改

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

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

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

優(yōu)缺點:

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

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

算法舉例:

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

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

分享題目:JWT中token的理解
文章URL:http://weahome.cn/article/dsoiohc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部