.Net Core JWT 对称可逆加密 (一)

JWT

一 结构如下:

1、header包含加密算法和加密的对象类型是。如图加密算法是HMAC SHA-256,加密的对象类型是JWT 。

2、payload 有效载荷,key-value对的数据结构。用于存放一些额外的信息(角色等),此处的信息不加密,所以不建议存放敏感信息。

以上两段结构都需要经过BASE64编码。

3、签名。将编码后的header跟编码后的payload拼接,再使用一个预定义好的secretKey去加密最后得出来的就是签名。

 

 

二认证服务。直接贴代码

        /// <summary>
        /// 使用对称可逆加密生成token
        /// </summary>
        /// <param name="name"></param>
        /// <param name="pwd"></param>
        /// <returns></returns>
        public string CreateToken(string name, string pwd)
        {
            //密钥 配置文件定义。 对称可逆加密调用方跟服务端的密钥一致
            var key = AppSettingsHelper.AppSettings.key;

            //表示生成对称安全密钥
            SymmetricSecurityKey _safeKey = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(key));

            //签名算法
            SigningCredentials creds = new SigningCredentials(_safeKey, SecurityAlgorithms.HmacSha256);

            //自定义paylodd
            var claims = new[]{
               new Claim(ClaimTypes.Name,name),
               new Claim("角色","Admin")
            };

           //组成令牌数据
            JwtSecurityToken jwtSecurityToken = new JwtSecurityToken(
              claims: claims,
              signingCredentials:  creds,
              expires: DateTime.Now.AddMinutes(15)
              );

            //生成token
            string token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);

            return token;
        }

需要引入以下两个dll: 

Microsoft.IdentityModel.Tokens

System.IdentityModel.Tokens.Jwt

 

使用postman测试:

 

posted @ 2021-12-07 17:52  勇敢肥牛  阅读(351)  评论(0)    收藏  举报