国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.Net Core3.0中使用JWT認證的實現

2024-07-10 12:49:43
字體:
來源:轉載
供稿:網友

JWT認證簡單介紹

關于Jwt的介紹網上很多,此處不在贅述,我們主要看看jwt的結構。

JWT主要由三部分組成,如下:

HEADER.PAYLOAD.SIGNATURE

HEADER 包含token的元數據,主要是加密算法,和簽名的類型,如下面的信息,說明了

加密的對象類型是JWT,加密算法是HMAC SHA-256

{"alg":"HS256","typ":"JWT"}

然后需要通過BASE64編碼后存入token中

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9  

Payload 主要包含一些聲明信息(claim),這些聲明是key-value對的數據結構。

通常如用戶名,角色等信息,過期日期等,因為是未加密的,所以不建議存放敏感信息。

{"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name":"admin","exp":1578645536,"iss":"webapi.cn","aud":"WebApi"}

也需要通過BASE64編碼后存入token中

eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiYWRtaW4iLCJleHAiOjE1Nzg2NDU1MzYsImlzcyI6IndlYmFwaS5jbiIsImF1ZCI6IldlYkFwaSJ9

Signature jwt要符合jws(Json Web Signature)的標準生成一個最終的簽名。把編碼后的Header和Payload信息加在一起,然后使用一個強加密算法,如 HmacSHA256,進行加密。HS256(BASE64(Header).Base64(Payload),secret)

2_akEH40LR2QWekgjm8Tt3lesSbKtDethmJMo_3jpF4

最后生成的token如下

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiYWRtaW4iLCJleHAiOjE1Nzg2NDU1MzYsImlzcyI6IndlYmFwaS5jbiIsImF1ZCI6IldlYkFwaSJ9.2_akEH40LR2QWekgjm8Tt3lesSbKtDethmJMo_3jpF4

開發環境

框架:asp.net 3.1

IDE:VS2019

ASP.NET 3.1 Webapi中使用JWT認證

命令行中執行執行以下命令,創建webapix項目:

dotnet new webapi -n Webapi -o WebApi

特別注意的時,3.x默認是沒有jwt的Microsoft.AspNetCore.Authentication.JwtBearer庫的,所以需要手動添加NuGet Package,切換到項目所在目錄,執行 .net cli命令

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer --version 3.1.0

創建一個簡單的POCO類,用來存儲簽發或者驗證jwt時用到的信息

using Newtonsoft.Json;using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;namespace Webapi.Models{  public class TokenManagement  {    [JsonProperty("secret")]    public string Secret { get; set; }    [JsonProperty("issuer")]    public string Issuer { get; set; }    [JsonProperty("audience")]    public string Audience { get; set; }    [JsonProperty("accessExpiration")]    public int AccessExpiration { get; set; }    [JsonProperty("refreshExpiration")]    public int RefreshExpiration { get; set; }  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 会泽县| 友谊县| 彰化市| 宣武区| 北票市| 南和县| 华亭县| 健康| 苍梧县| 稷山县| 嘉黎县| 准格尔旗| 陆良县| 墨脱县| 崇文区| 七台河市| 德钦县| 固安县| 白银市| 钦州市| 青阳县| 德保县| 巴马| 林芝县| 宿州市| 泸定县| 托克托县| 华坪县| 五河县| 宁津县| 东台市| 凭祥市| 张家界市| 怀来县| 大同县| 高碑店市| 丹寨县| 高密市| 方正县| 五指山市| 扶沟县|