.NetCore——JWT加密

.NetCore——JWT加密

一、介绍

JSON Web令牌(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地将信息作为JSON对象传输。由于此信息是经过数字签名的,因此可以被验证和信任。可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对对JWT进行签名。(官网复制) 在网上整理了一些资料,简单的使用,下面直接上干货。

二、使用
首先引入包
.NetCore——JWT加密_第1张图片
开始生成令牌,详细看代码注释。
.NetCore——JWT加密_第2张图片

//秘钥
            var secret = "This's My First Time Using JWT";

            //签发者
            var issuer = "QiaoFan";

            //接受者
            var audience = "TestUser";

            //表示生成对称安全密钥
            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));

            //签名指定算法
            var sigingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

            //自定义payload
            var claims = new Claim[] {
             new Claim("UserId",Guid.NewGuid().ToString()),
             new Claim("Name","TestUser")
            };

            //组成令牌数据
            var securtityoken = new JwtSecurityToken(
                 issuer: issuer,
                 audience: audience,
                 claims: claims,
                 signingCredentials: sigingCredentials,
                 expires: DateTime.Now.AddMilliseconds(30)
                );

            //生成令牌
            var token = new JwtSecurityTokenHandler().WriteToken(securtityoken);

秘钥解析
.NetCore——JWT加密_第3张图片

//生成令牌
            var token = new JwtSecurityTokenHandler().WriteToken(securtityoken);

            //令牌解析
            var handler = new JwtSecurityTokenHandler();
            //读取令牌并获取其中的自定义payload
            var payload = handler.ReadJwtToken(token).Payload;
            //获取Claims对象
            var claimss = payload.Claims;

            Dictionary<string, string> dc = new Dictionary<string, string>();

            claimss.ToList().ForEach(n =>
            {
                dc.Add(n.Type.ToString(), n.Value.ToString());
            });

下面看看效果
.NetCore——JWT加密_第4张图片
生成的令牌在JWT官网也可以进行解析
.NetCore——JWT加密_第5张图片
在这可以看到跟咱们放入的信息是相同的。

接下来看一下咱们解析出来的数据是否准确。
.NetCore——JWT加密_第6张图片
从图中监视看到解析出来的数据没有问题。

这就可以简单的利用JWT的加密方式生成令牌。

在使用的时候可以根据实际的情况,对数据,生成后的令牌 都可以再次进行加密使用。

官方直通车

环境: vs 2019 core3.1

你可能感兴趣的:(.netCore日常使用)