ToB企服应用市场:ToB评测及商务社交产业平台
标题:
ASP.NET Core 标识(Identity)框架系列(二):使用标识(Identity)框架
[打印本页]
作者:
用户国营
时间:
2024-11-29 18:58
标题:
ASP.NET Core 标识(Identity)框架系列(二):使用标识(Identity)框架
前言
JWT(JSON Web Token)是一种开放尺度(RFC 7519),用于在网络上以 JSON 对象的情势安全地传输信息。
JWT 通常用于在用户和服务器之间传递身份验证信息,以便在用户举行跨域访问时举行身份验证。
JWT 由三部分组成,它们用点号(.)连接在一起,形成一个紧凑的字符串。
这三部分分别是:
Header(头部):包罗了形貌 JWT 的元数据,例如令牌的类型(即JWT),以及所使用的签名算法等信息。
Payload(载荷):包罗了有关用户或其他实体的信息,以及其他元数据。Payload 可以包罗称为 "声明" 的键值对,用于形貌实体的一些属性。声明分为注册声明、公共声明和私有声明。
Signature(签名):使用头部中指定的算法对头部和载荷举行签名,以确保数据的完备性和验证发送方的身份。签名是由编码后的头部、编码后的载荷、密钥和指定的算法天生的。
JWT 具有很多优点,例如很方便在差别的域之间举行身份验证、减少服务器端的存储压力、以及支持跨语言和跨平台使用等等。
通过本文,可以具体了解如何使用 ASP.NET Core 标识(Identity)框架天生 JWT Token。
Step By Step 步骤
创建一个 .Net Core Console 项目
引用以下 Nuget 包:
System.IdentityModel.Tokens.Jwt
打开 Program.cs 文件,天生 JWT token(
重点看注释
)
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
// Claim代表用户信息
// 一个Claim就代表一条用户信息
// Claim有两个主要的属性:Type 和 Value
// 它们都是 string 类型的,Type 代表用户信息的类型,Value 代表用户信息的值
// Type可以取任意值
// 不过,一般 Type 的值都取自 ClaimTypes 类中的成员
// 好处是可以更方便地与其他系统对接
// 下面代码创建了5个Claim对象
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.NameIdentifier, "6"));
claims.Add(new Claim(ClaimTypes.Name, "yzk"));
claims.Add(new Claim(ClaimTypes.Role, "User"));
claims.Add(new Claim(ClaimTypes.Role, "Admin"));
claims.Add(new Claim("PassPort", "E90000082")); //自定义的PassPort为E90000082的用户护照信息
// 对 JWT 进行签名的密钥
string key = "fasdfad&9045dafz222#fadpio@0232";
// 设置令牌的过期时间
DateTime expires = DateTime.Now.AddDays(1);
/ /根据过期时间、多个 Claim 对象、密钥来生成 JWT
byte[] secBytes = Encoding.UTF8.GetBytes(key);
var secKey = new SymmetricSecurityKey(secBytes);
var credentials = new SigningCredentials(secKey, SecurityAlgorithms.HmacSha256Signature); //算法
var tokenDescriptor = new JwtSecurityToken(claims: claims, expires: expires, signingCredentials: credentials);
string jwt = new JwtSecurityTokenHandler().WriteToken(tokenDescriptor);
Console.WriteLine(jwt);
复制代码
运行项目,将在命令窗口中打印出代码天生的 JWT Token,通过这个 Token,就可以应用在身份验证等场合。
总结
JWT 具有很多优点,当然,使用时也要注意安全性,正确地设置逾期时间、制止在 JWT 中存储敏感信息等。
JWT 的工作流程通常如下:
起首客户端请求时提供身份验证信息(例如用户名和密码)
服务器接收请求后,验证信息并确认无误天生一个 JWT,将其作为相应的一部分发送回客户端
客户端在随后的请求中将 JWT 包罗在请求头中
服务器验证 JWT 的签名,并解析其中的信息,从而完成身份验证过程
往期精彩
C# 静态类,高手不想让你知道的 15 个原形
封装一个 C# 范围判断函数,从此告别重复编写范围判断代码的烦恼
用 C# Stopwatch 计时,让代码性能飞起来!
轻装上阵,Visual Studio LocalDB:.NET 程序员的本地数据库神器
封装一个C#全能基础数据类型转换器,一招解决所有基础类型转换烦恼
闲话 .NET(7):.NET Core 能镌汰 .NET FrameWork 吗?
常用的 4 种 ORM 框架(EF Core,SqlSugar,FreeSql,Dapper)对比总结
C# AutoMapper 10个常用方法总结
C# 7个方法比力两个对象是否相等
C# 去掉字符串末了一个字符的 4 种方法
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4