专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

C# JWT权限验证的实现

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:06:17       共计:3592 浏览

目录


   什么是JWT,它是一种对API的保护方案,为什么要进行保护呢

   设计原则

   第一步:创建token

   第二步:解析token


什么是JWT,它是一种对API的保护方案,为什么要进行保护呢


   防泄漏:你肯定不希望你的数据能被别人随意调用,比如公司的机密信息,不可能每个人都可以访问到

   防攻击:防止被人伪装恶意调用接口,利用网关就把请求拦截在外面,防止对服务器造成资源压力

   防止被人篡改,导致请求不到信息,防重放攻击(案例:在公共网络环境中,请求被截获,稍后被重放或多次重放)


设计原则


   轻量级

   易于开发、测试和部署

   适合于异构系统(跨操作系统、多语言简易实现)

   所有写操作接口(增、删、改 操作)

   非公开的读接口(如:涉密/敏感/隐私 等)


第一步:创建token



/// <summary>

       /// 创建token

       /// </summary>

       /// <returns></returns>

       [HttpPost]

       public IActionResult CreateJWT1()

       {

           //创建声明Token数组

           var claim = new Claim[]

               {

               new Claim("userid","123"),

               new Claim("userCode","kevinMa"),

               new Claim("projectID","62"),

               new Claim("isValid","1"),

               new Claim("userName","马鹏"),

               new Claim("address","深圳"),

               new Claim("datetime",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),

               new Claim("expires",DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss")),

               };


           var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("yanglingcong@qq.com"));//密钥大小要超过128bt,最少要16位


           //实例化一个token对象

           //第一种方式

           //var token = new JwtSecurityToken(claims: claim);


           //第二种方式

           var token = new JwtSecurityToken(

               issuer: "kevin",//发起人:当前项目

               audience: "kevin project",//订阅:我们需要谁去使用这个Token

               claims: claim,//声明的数组

               expires: DateTime.Now.AddHours(1),//当前时间加一小时,一小时后过期

               signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)//数字签名 第一部分是密钥,第二部分是加密方式

               );


           //生成token

           var jwtToken = new JwtSecurityTokenHandler().WriteToken(token);

           return ToSuccessJson(new { token = jwtToken });

       }


第二步:解析token



/// <summary>

       /// 解析token

       /// </summary>

       /// <param name="token"></param>

       /// <returns></returns>

       [HttpPost]

       public IActionResult JXToken(string token)

       {

           

           //第一种直接用JwtSecurityTokenHandler提供的read方法

           var jwtHander = new JwtSecurityTokenHandler();

           JwtSecurityToken jwtSecurityToken = jwtHander.ReadJwtToken(token);

           

           GetTokenModel tokenModel = new GetTokenModel();

           var currentInfo = jwtSecurityToken.Claims;

           if (currentInfo.Count() > 0)

           {

               tokenModel.userid = currentInfo.FirstOrDefault(f => f.Type == "userid").Value;

               tokenModel.userCode = currentInfo.FirstOrDefault(f => f.Type == "userCode").Value;

               tokenModel.projectID = currentInfo.FirstOrDefault(f => f.Type == "projectID").Value;

               tokenModel.userName = currentInfo.FirstOrDefault(f => f.Type == "userName").Value;

               tokenModel.address = currentInfo.FirstOrDefault(f => f.Type == "address").Value;

               tokenModel.datetime = currentInfo.FirstOrDefault(f => f.Type == "datetime").Value;

               tokenModel.expires = currentInfo.FirstOrDefault(f => f.Type == "expires").Value;

           }

           return ToSuccessJson(new { tokenModel });

       }


到此这篇关于C# JWT权限验证的实现的文章就介绍到这了,更多相关C# JWT权限验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:solr8.9部署solrcloud | ·下一条:JWT的结构

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有