.NetCore——JWT加密

.NetCore——JWT加密

一、介绍

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

二、使用
首先引入包
在这里插入图片描述
开始生成令牌,详细看代码注释。
在这里插入图片描述

//秘钥
            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);

秘钥解析
在这里插入图片描述

//生成令牌
            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());
            });

下面看看效果
在这里插入图片描述
生成的令牌在JWT官网也可以进行解析
在这里插入图片描述
在这可以看到跟咱们放入的信息是相同的。

接下来看一下咱们解析出来的数据是否准确。
在这里插入图片描述
从图中监视看到解析出来的数据没有问题。

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

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

官方直通车

环境: vs 2019 core3.1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值