JWT认证授权怎么在ASP.NET Core项目中使用(asp.net,core,jwt,开发技术)

时间:2024-05-04 06:19:50 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    JWT%E8%AE%A4%E8%AF%81%E6%8E%88%E6%9D%83%E6%80%8E%E4%B9%88%E5%9C%A8ASP.NET+Core%E9%A1%B9%E7%9B%AE%E4%B8%AD%E4%BD%BF%E7%94%A8

名词解析

认证 : 识别用户是否合法

授权: 赋予用户权限 (能访问哪些资源)

鉴权: 鉴定权限是否合法

Jwt优势与劣势

优势

1、 无状态

token 存储身份验证所有信息 , 服务端不需要保存用户身份验证信息, 减少服务端压力 , 服务端更容易水平扩展, 由于无状态, 又会导致它最大缺点 , 很难注销

2、 支持跨域访问

Cookie是不允许垮域访问的,token支持

3、 跨语言

基于标准化的 JSON Web Token (JWT) , 不依赖特定某一个语言 , 例如生成的Token可以对多种语言使用(Net , Java , PHP …)

劣势

1、Token有效性问题

后台很难注销已经发布的Token , 通常需要借助第三方储存(数据库/缓存) 实现注销, 这样就会失去JWT最大的优势

2、占带宽

Token长度(取决存放内容) 比session_id大 , 每次请求多消耗带宽 , token只存必要信息 , 避免token过长

3、需要实现续签

cookies – session 通常是框架已经实现续签功能, 每次访问把过期时间更新, JWT需要自己实现, 参考OAuth3刷新Token机制实现刷新Token

4、消耗更多CPU

每次请求需要对内容解密和验证签名这两步操作,典型用时间换空间

只能根据自身使用场景决定使用哪一种身份验证方案 , 没有一种方案是通用的,完美的

.NET Core集成JWT认证授权服务

1、认证服务API:认证用户,并发布Token

1、引入nuget包,System.IdentityModel.Tokens.Jwt
2、创建生成Token的服务,建议使用面向接口和实现编程,方便服务注入容器ServicesCollection(涉及DI和IOC概念)
3、创建接口

4、在appsettings.config中添加生成token需要的信息,并映射成对象

5、实现接口,注入Configuration,获取TokenParameter对象

6、jwt中定义好的Claims

JWT标准里面定好的claim有:

iss(Issuser):代表这个JWT的签发主体;

sub(Subject):代表这个JWT的主体,即它的所有人;

aud(Audience):代表这个JWT的接收对象;

exp(Expiration time):是一个时间戳,代表这个JWT的过期时间;

nbf(Not Before):是一个时间戳,代表这个JWT生效的开始时间,意味着在这个时间之前验证JWT是会失败的;

iat(Issued at):是一个时间戳,代表这个JWT的签发时间;

jti(JWT ID):是JWT的唯一标识。

7、在鉴权项目工程Startup.cs文件里依赖注入JWT的服务类

8、添加AuthenticationController,生成Token,后期可以添加RefreshToken

2、资源中心API:使用从认证服务中心获取的Token,去访问资源,资源中心对用户信息以及Token进行鉴权操作,认证失败返回401

1、资源中心添加Nuget包(Microsoft.AspNetCore.Authentication.JwtBearer)

2、添加Authentication服务,添加JwtBearer,通过Configuration获取TokenParameter对象

3、在资源控制器上添加[Authorize]属性,以启用认证授权访问API资源

本文:JWT认证授权怎么在ASP.NET Core项目中使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:详解ASP.NET Core 反向代理部署下一篇:

21 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18