学做网站要多少钱,wordpress如何关闭评论,浙江省邮电工程建设有限公司网站,高端人才做兼职的招聘网站有哪些前言
JWT#xff08;JSON Web Token#xff09;是一种开放标准#xff08;RFC 7519#xff09;#xff0c;用于在网络上以 JSON 对象的形式安全地传输信息。
JWT 通常用于在用户和服务器之间传递身份验证信息#xff0c;以便在用户进行跨域访问时进行身份验证。
JWT 由…
前言
JWTJSON 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 ListClaim();
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 fasdfad9045dafz222#fadpio0232;// 设置令牌的过期时间
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 的签名并解析其中的信息从而完成身份验证过程