本篇文章简易介绍 .Net6 Weapi Jwt的认证过程,在此之前简易介绍一下jwt的常见问题

转载:JWT详解_jwt 解析_小昵称爱吃唐的博客-CSDN博客

流程可以根据下方的流程图做解析,

首先大家要打开VS2022创建SP.NET Core WebApi 的项目

然后下载可以配置Jwt的 的Nuget包

Microsoft.AspNetCore.Authentication.JwtBearer

我这里下载的是6.0版本的   下载时提示报错和自己的版本不搭配,大家看自己core的版本而定吧

6.0的net 就要用6.0的jwt

appsetting.json文件添加Jwt配置,瞎写就行,但是得满足有着三个字段,因为JWT配置的时候要用

  "JWT": {"ISyouuser": "www.baidu.com.cn",//发行者"IsAudience": "www.Audience.com.cn",//接收者"SignKey": "000000000000000000"//秘钥},

在Program.cs添加token验证,这里有需要用到的发行者、接受者、秘钥Key   是读取的json的字符串

// 添加JWT token验证
builder.Services.AddAuthentication(x =>
{x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(x =>
{x.RequireHttpsMetadata = false;x.SaveToken = true;x.TokenValidationParameters = new TokenValidationParameters{ValidateIssuerSigningKey = true,IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(builder.Configuration.GetValue<string>("JWT:SignKey"))),//JWT秘钥ValidIssuer = builder.Configuration.GetValue<string>("JWT:ISyouuser"),//发行者,ValidAudience = builder.Configuration.GetValue<string>("JWT:IsAudience"),//接收者,ValidateIssuer = true,ValidateAudience = true,// 是否验证Token有效期,使用当前时间与Token的Claims中的NotBefore和Expires对比ValidateLifetime = true,//注意这是缓冲过期时间,总的有效时间等于这个时间加上jwt的过期时间,如果不配置,默认是5分钟ClockSkew = TimeSpan.Zero};
});

同样是在在Program.cs添加

鉴权用的按钮:Authorize ,如果没有这个步骤就没有办法鉴权的   这步也是关键

//添加Swagger的Authiozer的按钮鉴权
builder.Services.AddSwaggerGen(s =>
{s.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });s.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme(){Description = "在下框中输入请求头中需要添加Jwt授权Token:Bearer Token",Name = "Authorization",In = ParameterLocation.Header,Type = SecuritySchemeType.ApiKey,BearerFormat = "JWT",Scheme = "Bearer"});s.AddSecurityRequirement(new OpenApiSecurityRequirement{{new OpenApiSecurityScheme{Reference = new OpenApiReference {Type = ReferenceType.SecurityScheme,Id = "Bearer"}},new string[] { }}});});

然后  我们还要启用验证,还是在program.cs下,注意顺序,不能乱,一定要先认证、再授权 ,否则会验证失败

app.UseAuthentication();// 认证中间件
app.UseAuthorization();//授权中间件

接下来我们新建一个Api控制器

 写一个token 方法用来做测试,注意!!!如果要读取appsetting.json文件的数据必须在控制器里注入IConfiguration 

        private readonly IConfiguration _config;public ValuesController(IConfiguration configuration){_config = configuration;}[HttpGet][Route("/GetToken")]public ActionResult<string> GetToken(){//这里我写死了,后边可以写一个实体,输入用户名和密码放进这里var claims = new[]{new Claim(ClaimTypes.Name,"userName"),new Claim(ClaimTypes.Upn,"userPwd")};//发行者var isyouruser = _config.GetValue<string>("JWT:ISyouuser");//接受者var isAudience = _config.GetValue<string>("JWT:IsAudience");//秘钥keyvar scKey = _config.GetValue<string>("JWT:SignKey");//设置token的过期时间DateTime timeout = DateTime.Now.AddMinutes(30);var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(scKey));var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);var jwtToken = new JwtSecurityToken(isyouruser, isAudience, claims, expires: timeout, signingCredentials: credentials);var token = new JwtSecurityTokenHandler().WriteToken(jwtToken);return "Bearer " + token;}

然后在你需要授权的控制器加入属性[Authorize]

如下:

然后我们来测试一下

测试一下   再我没有获取token的情况下  执行 需要授权的控制器 方法

不出意外返回401,是因为要有token的全局认证

那我们继续执行 token接口

复制token串,点击打开控制器右上角的Authorize

将串放入

然后依次点击 Authorize、Close

然后再去点击刚才的控制器

不出所料    授权成功,可以执行接口了

在这里稍稍提醒一下各位读者,在token接口里,我返回控制器方法token串是写的

"Bearer" + token

所以读者老爷如果只是单纯只返回token的时候,记得在控制器右上角的Authorize里  先写Bearer+空格+你的token

好了,今天的分享到这里,希望能够帮助到你,我们下期见

.NET 6 WebApi Swagger 配置 JWT token+Authorize认证相关推荐

  1. Spring Boot整合Swagger3配置全局Token

    应用背景:Swagger配置全局Token的目的在于调用真正接口前会被相关拦截器拦截,拦截器会校验此次访问是否合法,这时配置全局Token的作用就显现出来了,全局Token可以存储所有接口访问时的令牌 ...

  2. 使用identity+jwt保护你的webapi(二)——获取jwt token

    前言 上一篇已经介绍了identity在web api中的基本配置,本篇来完成用户的注册,登录,获取jwt token. 开始 开始之前先配置一下jwt相关服务. 配置JWT 首先NuGet安装包: ...

  3. ASP.NET WebApi 基于JWT实现Token签名认证

    一.前言 开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NET WebService服务中可以通过SoapHead验证机制 ...

  4. ASP.NET Core WebAPI中使用JWT Bearer认证和授权

    为什么是 JWT Bearer ASP.NET Core 在 Microsoft.AspNetCore.Authentication 下实现了一系列认证, 包含 Cookie, JwtBearer,  ...

  5. Jwt Token 的刷新机制设计

    Jwt Token 的刷新机制设计 Intro 前面的文章我们介绍了如何实现一个简单的 Jwt Server,可以实现一个简单 Jwt 服务,但是使用 Jwt token 会有一个缺点就是 token ...

  6. 关于 IdentityServer4 中的 Jwt Token 与 Reference Token

    原文:关于 IdentityServer4 中的 Jwt Token 与 Reference Token OpenID Connect(Core),OAuth 2.0(RFC 6749),JSON W ...

  7. 前后端分离 springboot shiro+jwt token认证 权限校验

    项目源码 国涛/springboot-shiro-jwthttps://gitee.com/dugt/springboot-shiro-jwt GitHub - dugt-1998/springboo ...

  8. jwt token注销_【原创精选】OAuth 2.0+JWT+spring security完成认证授权-生产级-附带源码...

    前言导读 分析一下为什么要用OAuth2和JWT来做 1. **单点登录(SSO)**方案单击登录方案是最常见的解决方案,但单点登录需要每个与用户交互的服务都必须与认证服务进行通信,这不但会造成重复, ...

  9. Spring Security 实战:登录成功后返回 JWT Token

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 170元买400元书的机会又来啦! 1. 前言 欢迎阅读 Spring Security 实 ...

最新文章

  1. 重磅 | 周志华最新论文:首个基于决策树集成的自动编码器,表现优于DNN
  2. shell命令的文本计算
  3. tensorflow 使用
  4. python递归面试题_python面试题
  5. Spring aop面向切面编程概述
  6. easyui 如何为标签动态追加属性实现渲染效果
  7. 【linux】【tar】tar命令详解之czvf,xzvf
  8. 程序员面试金典 - 面试题 01.07. 旋转矩阵(一次遍历+位运算)
  9. python自动控制库_一个可以自动化控制鼠标键盘的库:PyAUtoGUI
  10. #苹果maccmsv10# redis memcached 缓存的若干问题解决
  11. python如何给一组数据打标签_给数据集打标签python代码实现(1)
  12. What we find changes who we become.
  13. C++中,int a = 10的后面的操作
  14. 西铁城手表最外圈数字是什么_有的手表表盘外面有一圈数字,可以转动,是计算什么用的?...
  15. 大数据之flume数据采集
  16. QML Label/Text 文本居中显示
  17. Android进程分类与管理
  18. html图片无损压缩,有损压缩和无损压缩的区别是什么
  19. linux ubuntu硬盘数据丢失【硬盘开机未挂载】
  20. 如何用大数据和开放平台创新

热门文章

  1. 幼儿抽象逻辑思维举例_熊孩子到底在想什么—幼儿思维干货速记!
  2. Debian个人使用入门
  3. python ——随机选取n个元素
  4. 效率高、数据精,河段河道地形测量这样操作!
  5. 硬件工程师入门基础知识(一)基础元器件认识(二)
  6. 教你一波Lucas(卢卡斯)定理在数论解题中的应用
  7. 北大青鸟毕业的程序员该何去何从
  8. margin-top、padding-top的值为百分比
  9. 大数据——把Kafka中的数据传输到HBase中
  10. FACTORY 模式