5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注。
Cookie-Based认证
认证流程
我们先看下传统Web端的认证流程:


以上流程很简单,有过mvc开发经验的都了如指掌,一图胜千言就不展开介绍了,下面简单演示一下实现:
编码实现
首先我们新建一个mvc项目

我们在AdminController.cs里增加[Authorize]

在Startup.cs中

这时候我们访问https://localhost:5001/Admin/Index后台会跳转到Account/Login

所以我们要先登陆一下:https://localhost:5001/account/login,模拟登陆,最后再访问Admin/Index就成功了,如下图:

整个过程,我录个视频看下:

JWT认证
简介和使用场景
Cookie-Based认证不是我们这篇文章的重点,接下来我们来看下JWT(JSON Web Token)认证,关于这个认证网上资料也非常多。这里有Catcher有篇不错的文章参考,这里还有一个JWT的官网值得关注和简书是的参考(跳转)。
相对以往的文章,我会吸其精华整理后变成我系列的一部分,我知道重复是危险的,但是不去整理,似乎离系统化还是有那么一点点距离。所以我写的这篇不是重复造轮子,我会尽可能站在您的角度,考虑阅读的舒服性,理解的便捷性。也许你会觉得简单粗暴,一看就懂,那就有那么点意义。其实我觉得技术文章其实也可以不用长篇大论,重点是要能把简单的道理用深入浅出的方式让大家快速接受。
JWT一般用在基于RESTful API的移动端、Web端、其他端等多个终端的联合认证。和Cookie-Based认证最大的不同是,他不需要手动来重定向,API只返回标准的HTTP Code,具体有哪些Code,我们可以查看阮一峰大哥的RESTful API设计指南和RESTful API最佳实践。这里扯远了,我们看下图流程,基本就知道JWT的机制了。

关于JWT我们掌握它的Header、Payload、Signature三段部分就差不多了,如下图所示:

我们看到左边的Token的是怎么来的,右边的SIGNATURE经过多重加密进行拼接,其中HEADER和PAYLOAD进行了BASE64位加密,然后+256位的Secret,外层再用SHA256进行加密。
编码实现
接下来我们编码来实现这个认证:
1) 首先我们新建JSON配置和对应的实体映射。

2)在Starup.cs当中,我们需要引入类库
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.Text;
3)同时在Starup.cs中,通过Bind方法进行配置和实体的绑定,然后配置JWT相关参数。如下图所示:

4)最后别忘记配置权限管道

5)我们再看看加和不加Authorize的浏览器返回的区别,如下图所示:

以上代码大部分是截图,截图看起来更加顺眼,虽然不方便复制,如果你想看完整代码可以访问我的GitHub地址
希望以上分享对你有帮助,我是IT人张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您关注。

5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」的更多相关文章
- 5.3Role和Claims授权「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Role授权 这是一种Asp.Net常用的传统的授权方法,当我们在 ...
- 5.2基于JWT的令牌生成和定制「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Token生成 我们知道一旦我们给API添加[Authorize] ...
- ASP.NET Core 基于JWT的认证(一)
ASP.NET Core 基于JWT的认证(一) Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计 ...
- ASP.NET Core WebAPI中使用JWT Bearer认证和授权
目录 为什么是 JWT Bearer 什么是 JWT JWT 的优缺点 在 WebAPI 中使用 JWT 认证 刷新 Token 使用授权 简单授权 基于固定角色的授权 基于策略的授权 自定义策略授权 ...
- ASP.NET Core 基于JWT的认证(二)
ASP.NET Core 基于JWT的认证(二) 上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用 ...
- Asp.net Core 系列之--5.认证、授权与自定义权限的实现
ChuanGoing 2019-11-24 asp.net core系列已经来到了第五篇,通过之前的基础介绍,我们了解了事件订阅/发布的eventbus整个流程,初探dapper ORM实现,并且简单 ...
- 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)
黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...
- 实践剖析.NET Core如何支持Cookie和JWT混合认证、授权
前言 为防止JWT Token被窃取,我们将Token置于Cookie中,但若与第三方对接,调用我方接口进行认证.授权此时仍需将Token置于请求头,通过实践并联系理论,我们继续开始整活!首先我们实现 ...
- k8s 基于RBAC的认证、授权介绍和实践
在K8S中,当我们试图通过API与集群资源交互时,必定经过集群资源管理对象入口kube-apiserver.显然不是随随便便来一个请求它都欢迎的,每个请求都需要经过合规检查,包括Authenticat ...
随机推荐
- JS中清空字符串前后空格
在JS 操作的时候 长期会有对字符串的操作, 但是在JS 中不像在C#中 有字符串的方法 Trim() 来对字符串进行处理 . 所以自己写一个对字符串前后清楚空格的方法还是有必要的 以免以后忘记了 ...
- ROC曲线的计算
1.ROC曲线简介 在评价分类模型时,会用到ROC(receiver operating characteristic)曲线.ROC曲线可用来评价二元分类器( binary classifier)的优 ...
- 你不知道的JavaScript--Item7 函数和(命名)函数表达式
1.函数声明与函数表达式 在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,两者期间的区别是有点晕,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier ...
- 运维监控利器Nagios之:nagios配置详解
http://ixdba.blog.51cto.com/2895551/752870 一.nagios配置过程详解 1.nagios默认配置文件介绍 nagios安装完毕后,默认的配置文件在/usr ...
- 玩转Spring MVC(三)----spring基本配置文件
这篇文章总结一下spring mvc的基本配置,首先贴一张我的项目的目录截图,有一些多余的文件,大家不必在意: 用到的一些jar包在这:<a>http://download.csdn.ne ...
- Java RESTful 框架的性能比较
来源:鸟窝, colobu.com/2015/11/17/Jax-RS-Performance-Comparison/ 如有好文章投稿,请点击 → 这里了解详情 在微服务流行的今天,我们会从纵向和横向 ...
- monitor.go
package main import ( "fmt" "net/http" ) // 查询监控信息的接口 func statsHandler( ...
- 新版知乎登录之post请求
前言 在上一篇文章中给大家讲解了requests发送post请求的几种方式,并分析了一些使用陷阱. 疑惑 在文章发表之后,有朋友给我留言说,知乎登录就没有使用提交Form表单(application/ ...
- BZOJ1467_Pku3243 clever Y_EXBSGS
BZOJ1467_Pku3243 clever Y_EXBSGS Description 小Y发现,数学中有一个很有趣的式子: X^Y mod Z = K 给出X.Y.Z,我们都知道如何很快的计算K. ...
- BZOJ_2038_[2009国家集训队]小Z的袜子(hose)_莫队
BZOJ_2038_[2009国家集训队]小Z的袜子(hose)_莫队 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无 ...