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

首頁 > 編程 > .NET > 正文

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

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

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; }  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东方市| 平谷区| 佳木斯市| 隆德县| 台湾省| 广汉市| 岳普湖县| 连平县| 商河县| 大庆市| 临城县| 北川| 尚志市| 尉氏县| 天峨县| 元氏县| 大宁县| 湖北省| 民和| 乌拉特后旗| 汝南县| 舞钢市| 八宿县| 墨江| 易门县| 朔州市| 南召县| 通城县| 铜鼓县| 宁陕县| 海安县| 深泽县| 洛浦县| 门源| 如皋市| 靖宇县| 太保市| 乐业县| 临颍县| 且末县| 许昌市|