国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C#】.Net Framework框架使用JWT

這篇具有很好參考價值的文章主要介紹了【C#】.Net Framework框架使用JWT。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

2023年,第31周,第2篇文章。給自己一個目標,然后堅持總會有收貨,不信你試試!
本篇文章主要簡單講講,.Net Framework框架下使用JWT的代碼例子,以及他們的基本概念。
2002年微軟發(fā)布了.net framework 1.0,那個時候博主剛開始玩?zhèn)髌嬗螒颍佑|電腦的時間還是挺早的。

【C#】.Net Framework框架使用JWT,c#,JWT

1、什么是JWT

JWT(JSON Web Token)是一種開放的、自包含的標準,用于在網(wǎng)絡應用間傳輸信息。
它基于JSON(JavaScript Object Notation)格式,并使用數(shù)字簽名或加密來驗證消息的完整性和真實性。

JWT由三個部分組成:頭部(Header)、載荷(Payload)和簽名(Signature)。

1.1、頭部(Header)

包含描述JWT的元數(shù)據(jù),例如所使用的加密算法和類型(通常是JWT)。

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

1.2、載荷(Payload)

包含具體的數(shù)據(jù),也可以添加自定義的聲明(Claim),如用戶名、角色、過期時間等。

{
 "sub": "1234567890",
 "name": "John Doe",
 "iat": 1516239022
}

1.3、簽名(Signature)

由頭部和載荷組成,并使用私鑰(或?qū)ΨQ密鑰)進行簽名,確保數(shù)據(jù)的完整性和真實性。

HMACSHA256(
 base64UrlEncode(header) + "." +
 base64UrlEncode(payload),
 secretKey
)

1.4、JWT工作流程

1)客戶端提供有效的憑證(如用戶名和密碼)進行身份驗證請求。
2)服務器進行身份驗證,并返回帶有有效簽名的JWT給客戶端。
3)客戶端在后續(xù)請求中使用該JWT,通過解析和驗證JWT,服務器可以確定請求的發(fā)起者身份和權限。

1.5、JWT優(yōu)點

1)自包含性
JWT包含了身份驗證和授權所需的所有信息,減輕了服務器存儲狀態(tài)的負擔。
2)松散耦合
JWT可用于不同的平臺和服務之間的身份驗證和授權,具有良好的兼容性。
3)可擴展性
可以自定義聲明來存儲額外的數(shù)據(jù)。
4)安全性
JWT的簽名可以確保數(shù)據(jù)的完整性和真實性。

1.6、JWT缺點

1)無法撤銷
一旦 JWT 被簽發(fā),就無法撤銷或使其失效,除非將密鑰從客戶端強制撤銷或更改。因此,如果需要撤銷令牌,JWT 不是一個合適的選擇。
2)體積較大
JWT 包含了頭部、載荷和簽名,在網(wǎng)絡傳輸中占用的空間相對較大。盡管可以對 JWT 進行壓縮,但仍然比一些其他的驗證機制更加臃腫。
3)敏感信息存儲
JWT 默認存儲在客戶端,通常存儲在瀏覽器的本地存儲(如 LocalStorage 或 Cookie)中。這使得 JWT 脆弱,因為它容易受到 XSS 攻擊的影響。因此,不建議將敏感信息存儲在 JWT 的載荷中。

需要注意的是,由于JWT是基于Base64編碼的,因此它并不是加密的。所以在使用JWT時,不要在其載荷中存儲敏感信息,如密碼或銀行卡號等。

總結起來,JWT是一種輕量級、安全的身份驗證和授權解決方案,其簡單的結構和可擴展性使其成為當今Web應用程序中常用的身份驗證標準之一。

2、Framework框架

2.1、版本歷時

.NET Framework 是微軟開發(fā)的一個應用程序開發(fā)框架,提供了開發(fā)和運行各種類型應用程序所需的庫、工具和運行時環(huán)境。下面是.NET Framework 各個主要版本的歷時情況:

編號 版本 發(fā)布時間 備注
1 .NET Framework 1.0 發(fā)布于2002年2月 這是最早的.NET Framework 版本,提供了基本的庫和運行時環(huán)境,用于支持開發(fā)和運行應用程序。
2 .NET Framework 1.1 發(fā)布于2003年4月 這個版本是對 .NET Framework 1.0 的升級,增加了一些新功能和修復了一些問題。
3 .NET Framework 2.0 發(fā)布于2005年11月 這是一個重大的版本升級,引入了許多新的功能,如可編程的 Windows Forms 控件、提供可視化設計的 Web 服務、增強的數(shù)據(jù)訪問和 XML 處理支持等。
4 .NET Framework 3.0 發(fā)布于2006年11月 實際上,.NET Framework 3.0 并未引入新的運行時,而是在 .NET Framework 2.0 基礎上添加了一組新的功能。
5 .NET Framework 3.5 發(fā)布于2007年11月 這是對 .NET Framework 3.0 的升級,引入了一些新的特性和改進,如 LINQ (Language Integrated Query)、ABM (ASP.NET AJAX) 等。
6 .NET Framework 4.0 發(fā)布于2010年4月 這是一個又一個重大版本升級,引入了大量的新功能和改進,如支持并行計算、新的編譯器、Entity Framework 4.0、改進的 WCF 和 WPF 等。
7 .NET Framework 4.5 發(fā)布于2012年8月 這是 .NET Framework 4.0 的升級版,引入了一些新的特性和改進,如異步編程模型 (async/await)、改進的 GC (垃圾回收器)、桌面應用程序的改進等。
8 .NET Framework 4.6 發(fā)布于2015年7月 這是 .NET Framework 4.5 的升級版,引入了一些新的特性和改進,如 RyuJIT (即時編譯器)、改進的 WPF、改進的 ASP.NET 等。
9 .NET Framework 4.7 發(fā)布于2017年4月 這是 .NET Framework 4.6 的升級版,引入了一些新的特性和改進。
10 .NET Framework 4.8 發(fā)布于2019年4月 這是 .NET Framework 4.7 的升級版,引入了一些新的特性和改進。

需要注意的是,自.NET Framework 4.5起,微軟改變了發(fā)布策略,不再單獨發(fā)布全新的框架版本,而是通過積累更新 (Cumulative Updates) 來提供新功能和改進,以確保開發(fā)者可以更加輕松地升級和遷移。

此外,需要注意的是,自 .NET Framework 4.8 起,微軟正逐漸停止對傳統(tǒng)的.NET Framework 的更新,并推薦開發(fā)者使用更加開放和跨平臺的 “.NET” 系列產(chǎn)品,如 .NET Core 和 .NET 5+。

3、JWT代碼實現(xiàn)

在C# .NET Framework中使用JWT(JSON Web Token)插件來處理身份驗證和授權,
你可以使用提供JWT支持的第三方庫,如System.IdentityModel.Tokens.Jwt。
這個庫是.NET Framework的一部分,可以用于創(chuàng)建和驗證JWT。

下面使用System.IdentityModel.Tokens.Jwt庫生成和驗證JWT

3.1、引入庫

首先,確保你的項目引用了System.IdentityModel.Tokens.Jwt庫。

3.2、導入命名空間

導入所需的命名空間:

using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;

3.3、生成JWT代碼

使用以下代碼生成JWT:

// 設置JWT的密鑰
string secretKey = "your_secret_key";
byte[] keyBytes = Encoding.UTF8.GetBytes(secretKey);
var securityKey = new SymmetricSecurityKey(keyBytes);

// 創(chuàng)建JWT的簽名憑證
var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

// 設置JWT的Claims
var claims = new[]
{
   new Claim(ClaimTypes.Name, "John Doe"),
   new Claim(ClaimTypes.Email, "john.doe@example.com"),
   // 添加其他需要的聲明
};

// 創(chuàng)建JWT的Token
var token = new JwtSecurityToken(
   issuer: "your_issuer",
   audience: "your_audience",
   claims: claims,
   expires: DateTime.Now.AddDays(1),
   signingCredentials: signingCredentials
);

// 生成JWT字符串
var jwtToken = new JwtSecurityTokenHandler().WriteToken(token);

3.4、驗證JWT代碼

使用以下代碼驗證JWT:

// 驗證JWT的密鑰
var tokenValidationParameters = new TokenValidationParameters
{
   ValidateIssuer = true,
   ValidateAudience = true,
   ValidateIssuerSigningKey = true,
   IssuerSigningKey = securityKey,
   ValidIssuer = "your_issuer",
   ValidAudience = "your_audience"
};

// 驗證JWT字符串
var claimsPrincipal = new JwtSecurityTokenHandler().ValidateToken(jwtToken, tokenValidationParameters, out _);

請注意,上述示例中的"your_secret_key"、"your_issuer"和"your_audience"是示例值,你需要根據(jù)實際情況替換為真實的值。

使用以上代碼,你可以通過JwtSecurityTokenHandler類生成JWT字符串,并使用同樣的類驗證和解析JWT字符串。你還可以根據(jù)需要添加其他聲明,設置過期時間和其他參數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-615521.html

到了這里,關于【C#】.Net Framework框架使用JWT的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ASP.NET Core使用JWT+標識框架(identity)實現(xiàn)登錄驗證

    ASP.NET Core使用JWT+標識框架(identity)實現(xiàn)登錄驗證

    最近閱讀了《ASP.NET Core 技術內(nèi)幕與項目實戰(zhàn)——基于DDD與前后端分離》(作者楊中科)的第八章,對于Core入門的我來說體會頗深,整理相關筆記。 JWT:全稱“JSON web toke”,目前流行的跨域身份驗證解決方案; 標識框架(identity):由ASP.NET Core提供的框架,它采用RBAC(role

    2024年02月11日
    瀏覽(25)
  • 【C# .NET 】使用 Entity Framework Core 操作sqlite數(shù)據(jù)庫

    添加包 EF Core design package? ?NuGet Gallery | Home 使用用于?EF Core 遷移和現(xiàn)有數(shù)據(jù)庫中的反向工程(基架)的工具需要安裝相應的工具包: 可在 Visual Studio?包管理器控制臺中使用的 PowerShell 工具的?Microsoft.EntityFrameworkCore.Tools 跨平臺命令行工具的?dotnet-ef?和?Microsoft.EntityFramewor

    2024年02月14日
    瀏覽(25)
  • 切換.net Framework 版本后,出現(xiàn)NuGet 包是使用不同于當前目標框架的目標框架安裝的,可能需要重新安裝

    切換.net Framework 版本后,出現(xiàn)NuGet 包是使用不同于當前目標框架的目標框架安裝的,可能需要重新安裝

    由于添加新的dll文件,依賴的.NET Framework版本與當前的不一致,在vs 中切換了目標框架版本后,運行程序,出現(xiàn)以下的warnning信息: 一些 NuGet 包是使用不同于當前目標框架的目標框架安裝的,可能需要重新安裝。有關詳細信息,請訪問 https://docs.nuget.org/docs/workflows/reinstalling

    2024年02月16日
    瀏覽(22)
  • C#和.NET FrameWork概述

    C#和.NET FrameWork概述

    .NET FrameWork是由微軟開發(fā)的一種面相對象的環(huán)境框架,特點如下: ①多平臺:可在各種計算機、服務器、手機上運行。 ②標準化通訊協(xié)議:如XML、HTTP、JSON等。 ③安全性:CLR檢查并確保參數(shù)及數(shù)據(jù)對象的類型安全。 ④簡化部署:.NET程序不需要使用注冊表注冊 和 允許不同D

    2024年02月09日
    瀏覽(23)
  • C#核心筆記——(一)C#和.NET Framework

    C#是一種通用的,類型安全的面向?qū)ο缶幊陶Z言。其目標是提高程序員生產(chǎn)力。 C#實現(xiàn)了豐富的面向?qū)ο蠓妒?,包括封裝、繼承、多態(tài)。 C#面向?qū)ο筇匦园ǎ?統(tǒng)一的類型系統(tǒng) 類與接口 屬性、方法、事件 C#支持純函數(shù)模式 C#是一門類型安全的語言。例如:C#不允許將字符串類

    2024年02月08日
    瀏覽(26)
  • 解決Unity游戲開發(fā)使用Visual Studio Enterprise 2022提示未找到目標框架.net framework4.7.1問題

    解決Unity游戲開發(fā)使用Visual Studio Enterprise 2022提示未找到目標框架.net framework4.7.1問題

    采用Visual Studio Installer安裝Visual Studio Enterprise 2022,安裝中勾選游戲下Unity游戲開發(fā)。 單個組件中確保勾選.NET Framework 4.7.1目標包 安裝位置自定義修改至F盤后使用Visual Studio Enterprise 2022登錄,在Unity設置使用Visual Studio Enterprise 2022并打開對應項目文件,提示未找到目標框架.net

    2024年02月10日
    瀏覽(29)
  • ASP.NET Website 項目 .NET Framework 4.0 ~ .NET Framework 4.8支持c#哪些版本(Website)

    ASP.NET Website 項目 .NET Framework 4.0 ~ .NET Framework 4.8支持c#哪些版本(Website)

    本文講的是Website網(wǎng)站項目,由于維護老項目Website .net framework4.0,遇到c#6.0語法不支持。便做了點記錄 下面是關于 ASP.NET Website 項目在不同版本的 .NET Framework 下支持的 C# 版本的總結: ASP.NET Website 項目在 .NET Framework 4.0 中,默認使用 C# 4.0 版本。該版本不支持 C# 6.0 及更高版本

    2024年02月16日
    瀏覽(20)
  • .Net FrameWork 框架下使用System.Net.Mail封裝類 發(fā)送郵件失敗:服務器響應:5.7.1 Client was not authenticated 解決方案

    .Net FrameWork 框架下使用System.Net.Mail封裝類 發(fā)送郵件失敗:服務器響應:5.7.1 Client was not authenticated 解決方案

    偶然興起,想做一個后臺監(jiān)控PLC狀態(tài)的服務。功能如下:監(jiān)控到PLC狀態(tài)值異常后觸發(fā)郵件推送,狀態(tài)改變后只推送一次。開始使用的是.net6.0開發(fā)框架開發(fā),一切都很順利,郵件也能正常推送。但由于現(xiàn)場工控機系統(tǒng)不是WIN10 20H2的最新版本,導致系統(tǒng)未安裝.Net6.0 Runtime。而我

    2024年02月03日
    瀏覽(22)
  • C#安裝“Windows 窗體應用(.NET Framework)”

    C#安裝“Windows 窗體應用(.NET Framework)”

    目錄 背景: 第一步: 第二步: 第三步: 總結: 如下圖所示:在Visual Studio Installer創(chuàng)建新項目的時候,想要添加windows窗體應用程序,發(fā)現(xiàn)里面并沒有找到Windows窗體應用(.NET Framework)模板,快捷搜索也沒有發(fā)現(xiàn),那么為什么沒有找到這個模板,可能程序未曾安裝這個模板,那接下來就

    2024年02月10日
    瀏覽(18)
  • C# 利用.NET 升級助手將.NET Framework項目升級為.NET 6

    C# 利用.NET 升級助手將.NET Framework項目升級為.NET 6

    .NET6 正式版本已經(jīng)發(fā)布有一陣子了,今天我就體驗一下如何將.NET?Framework的項目升級為.NET 6. 升級條件: Windows 操作系統(tǒng) .NET 6 SDK Visual Studio 2022 17.0 或更高版本 ①首先是VS2022下載,直接上微軟官方網(wǎng)站,下載地址: https://visualstudio.microsoft.com/zh-hans/downloads/ 下載后,在線安裝就

    2024年02月12日
    瀏覽(88)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包