asp.netcore 有关jwt的依赖包介绍

ops/2025/2/6 2:02:40/

1. Microsoft.AspNetCore.Authentication.JwtBearer (8.0.10)

这是 ASP.NET Core 官方提供的用于处理 JWT Bearer 认证的包。它的主要作用是将 JWT 认证集成到 ASP.NET Core 的认证系统中。

主要功能:
  • JWT 认证中间件:提供了一个中间件,用于验证传入的 JWT 令牌。

  • 认证方案:支持将 JWT 认证作为一个认证方案(JwtBearerDefaults.AuthenticationScheme)。

  • 配置选项:允许配置 JWT 认证的参数,如令牌验证参数、颁发者、受众等。

典型用法:

在 Startup.cs 或 Program.cs 中配置 JWT 认证:

csharp

复制

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>{options.TokenValidationParameters = new TokenValidationParameters{ValidateIssuer = true,ValidateAudience = true,ValidateLifetime = true,ValidateIssuerSigningKey = true,ValidIssuer = "your-issuer",ValidAudience = "your-audience",IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"))};});

2. Microsoft.IdentityModel.Tokens (8.3.1)

这是 Microsoft 提供的用于处理安全令牌(如 JWT)的核心库。它提供了用于创建、验证和解析安全令牌的基础功能。

主要功能:
  • 令牌验证:提供验证 JWT 令牌的机制,包括签名验证、有效期检查等。

  • 密钥管理:支持对称密钥和非对称密钥的创建和管理。

  • 令牌解析:提供解析 JWT 令牌的功能,提取声明(Claims)等信息。

典型用法:

在配置 JWT 认证时,TokenValidationParameters 类(来自此包)用于定义令牌验证的规则:

csharp

复制

var tokenValidationParameters = new TokenValidationParameters
{ValidateIssuer = true,ValidateAudience = true,ValidateLifetime = true,ValidateIssuerSigningKey = true,ValidIssuer = "your-issuer",ValidAudience = "your-audience",IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"))
};

3. System.IdentityModel.Tokens.Jwt (8.3.1)

这是用于处理 JWT 令牌的库,提供了创建、解析和验证 JWT 的功能。它是 Microsoft.IdentityModel.Tokens 的一部分,专注于 JWT 的实现。

主要功能:
  • JWT 创建:支持生成 JWT 令牌。

  • JWT 解析:支持解析 JWT 令牌并提取声明(Claims)。

  • JWT 验证:支持验证 JWT 令牌的签名、有效期等。

典型用法:

生成 JWT 令牌:

csharp

复制

var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);var token = new JwtSecurityToken(issuer: "your-issuer",audience: "your-audience",claims: new List<Claim> { new Claim(ClaimTypes.Name, "username") },expires: DateTime.Now.AddMinutes(30),signingCredentials: credentials
);var tokenHandler = new JwtSecurityTokenHandler();
var tokenString = tokenHandler.WriteToken(token);

4. 这些包的关系

  • Microsoft.AspNetCore.Authentication.JwtBearer:依赖于 Microsoft.IdentityModel.Tokens 和 System.IdentityModel.Tokens.Jwt,用于将 JWT 认证集成到 ASP.NET Core 中。

  • Microsoft.IdentityModel.Tokens:提供通用的安全令牌处理功能,是 System.IdentityModel.Tokens.Jwt 的基础。

  • System.IdentityModel.Tokens.Jwt:专注于 JWT 的实现,提供 JWT 的创建、解析和验证功能。


5. 典型工作流程

  1. 生成 JWT 令牌

    • 使用 System.IdentityModel.Tokens.Jwt 创建 JWT 令牌。

    • 示例:

      csharp

      复制

      var tokenHandler = new JwtSecurityTokenHandler();
      var token = tokenHandler.CreateToken(tokenDescriptor);
      var tokenString = tokenHandler.WriteToken(token);
  2. 验证 JWT 令牌

    • 使用 Microsoft.AspNetCore.Authentication.JwtBearer 配置 JWT 认证中间件。

    • 示例:

      csharp

      复制

      services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>{options.TokenValidationParameters = new TokenValidationParameters{// 配置验证参数};});
  3. 解析 JWT 令牌

    • 使用 System.IdentityModel.Tokens.Jwt 解析 JWT 令牌并提取声明。

    • 示例:

      csharp

      复制

      var tokenHandler = new JwtSecurityTokenHandler();
      var jwtToken = tokenHandler.ReadJwtToken(tokenString);
      var claims = jwtToken.Claims;

6. 总结

  • Microsoft.AspNetCore.Authentication.JwtBearer:用于将 JWT 认证集成到 ASP.NET Core 中。

  • Microsoft.IdentityModel.Tokens:提供通用的安全令牌处理功能。

  • System.IdentityModel.Tokens.Jwt:专注于 JWT 的实现,提供创建、解析和验证 JWT 的功能。

这些包共同协作,使得在 ASP.NET Core 中实现基于 JWT 的身份验证和授权变得简单而高效。


http://www.ppmy.cn/ops/156022.html

相关文章

Spring Boot项目如何使用MyBatis实现分页查询

写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油&#xff0c;冲鸭&#x…

小程序越来越智能化,作为设计师要如何进行创新设计

一、用户体验至上 &#xff08;一&#xff09;简洁高效的界面设计 小程序的特点之一是轻便快捷&#xff0c;用户期望能够在最短的时间内找到所需功能并完成操作。因此&#xff0c;设计师应致力于打造简洁高效的界面。避免过多的装饰元素和复杂的布局&#xff0c;采用清晰的导航…

selenium记录Spiderbuf例题C03

防止自己遗忘&#xff0c;故作此为记录。 鸢尾花数据集(Iris Dataset) 这道题牵扯到JS动态加载。 步骤&#xff1a; &#xff08;1&#xff09;进入例题&#xff0c;需要找到按钮规律。 flip_xpath: str r"//li/a[onclickgetIrisData({});]" &#xff08;2&…

【单细胞第二节:单细胞示例数据分析-GSE218208】

GSE218208 1.创建Seurat对象 #untar(“GSE218208_RAW.tar”) rm(list ls()) a data.table::fread("GSM6736629_10x-PBMC-1_ds0.1974_CountMatrix.tsv.gz",data.table F) a[1:4,1:4] library(tidyverse) a$alias:gene str_split(a$alias:gene,":",si…

Linux网络 | 进入数据链路层,学习相关协议与概念

前言&#xff1a;本节内容进入博主讲解的网络层级中的最后一层&#xff1a;数据链路层。 首先博主还是会线代友友们认识一下数据链路层的报文。 然后会带大家重新理解一些概念&#xff0c;比如局域网交换机等等。然后就是ARP协议。 讲完这些&#xff0c; 本节任务就算结束。 那…

OpenCV:图像轮廓

目录 简述 1. 什么是图像轮廓&#xff1f; 2. 查找图像轮廓 2.1 接口定义 2.2 参数说明 2.3 代码示例 2.4 运行结果 3. 绘制图像轮廓 3.1 接口定义 3.2 参数说明 3.3 代码示例 3.4 运行结果 4. 计算轮廓周长 5. 计算轮廓面积 6. 示例&#xff1a;计算图像轮廓的面…

知识蒸馏教程 Knowledge Distillation Tutorial

来自于&#xff1a;Knowledge Distillation Tutorial 将大模型蒸馏为小模型&#xff0c;可以节省计算资源&#xff0c;加快推理过程&#xff0c;更高效的运行。 使用CIFAR-10数据集 import torch import torch.nn as nn import torch.optim as optim import torchvision.tran…

游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)

Unity Unity 首次发布于 2005 年&#xff0c;属于 Unity Technologies Unity 使用的开发技术有&#xff1a;C# Unity 的适用平台&#xff1a;PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域&#xff1a;开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…