国产探花免费观看_亚洲丰满少妇自慰呻吟_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; }  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝鸡市| 平江县| 龙岩市| 宁武县| 东乌| 白水县| 大姚县| 昌宁县| 土默特左旗| 绥滨县| 德惠市| 新昌县| 咸丰县| 楚雄市| 高州市| 安陆市| 洛阳市| 余江县| 长垣县| 清苑县| 龙里县| 弋阳县| 达尔| 辽阳市| 东乡县| 绥滨县| 石门县| 鲁山县| 南靖县| 绵竹市| 泾川县| 宜昌市| 措美县| 银川市| 广河县| 崇明县| 疏附县| 永昌县| 阜新市| 寿阳县| 西丰县|