首页 > 其他分享 >net core jwt的基本原理和实现

net core jwt的基本原理和实现

时间:2024-05-18 17:29:29浏览次数:30  
标签:core 令牌 JWT jwt 签名 net true options 密钥

NET Core 中的 JWT(JSON Web Token)基本原理和实现主要涉及到身份验证和授权的过程。以下是对 JWT 原理和实现的简要概述:

JWT 原理

JWT 是一种开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。这些信息可以被验证和信任,因为它们是数字签名的。JWT 的主要组成部分包括三个部分:

  1. Header(头部):描述 JWT 的元数据,如使用的签名算法(如 HMAC SHA256 或 RSA)。
  2. Payload(负载):包含有关声明(claims)的信息,这些声明是关于实体(如用户)和其他数据的声明。声明有三种类型:注册的声明(预定义)、公共的声明(自定义)和私有的声明(自定义,不共享)。
  3. Signature(签名):这是使用头部中指定的签名算法和密钥对头部和负载进行签名的结果。签名部分用于验证 JWT 的完整性和来源。

JWT 实现

在 .NET Core 中实现 JWT 通常涉及以下步骤:

  1. 安装必要的 NuGet 包:你可以通过 NuGet 安装 Microsoft.AspNetCore.Authentication.JwtBearer 包,它为 JWT 提供了内置的支持。

  2. 配置 JWT 认证:在 Startup.csConfigureServices 方法中,你需要配置 JWT 认证服务。这包括设置发行者(Issuer)、受众(Audience)、密钥(Secret Key)以及令牌的有效期等。

 

services.AddAuthentication(options =>  
{  
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;  
    options.DefaultChallengeScheme = 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"))  
    };  
});

 

  1. 生成 JWT 令牌:在用户成功登录后,你可以使用上述配置中的密钥和算法生成 JWT 令牌。这通常涉及将用户信息编码为 JSON,并使用指定的签名算法和密钥对其进行签名。
  2. 在客户端存储和使用 JWT:生成的 JWT 令牌通常会通过 HTTP 响应头(如 Authorization)发送给客户端。客户端可以在后续的请求中将其作为请求头的一部分发送给服务器,以进行身份验证和授权。
  3. 验证 JWT 令牌:在服务器端,你需要使用与生成令牌时相同的密钥和算法来验证 JWT 令牌的有效性。这包括验证令牌的签名、发行者、受众和有效期等。如果令牌有效,则服务器可以信任其中包含的用户信息,并允许客户端进行相应的操作。

总之,JWT 提供了一种安全、紧凑的方式在各方之间传输用户信息,而无需在服务器端存储会话数据。在 .NET Core 中使用 JWT 可以方便地实现基于令牌的身份验证和授权。

 

标签:core,令牌,JWT,jwt,签名,net,true,options,密钥
From: https://www.cnblogs.com/forges/p/18199534

相关文章

  • Ubuntu下darknet yolo4的编译
    Ubuntu下darknetyolo4的编译首次编辑:24/5/17/23:16最后编辑:24/5/18/12:47参考链接YOLOv4-darknetinstallationandusageonyoursystem(Windows&Linux)InstallingandBuildingDarknet官网0说明此博客只记录darknetyolo4+opencv的编译安装,不涉及cuda和cuDNN......
  • RepVGG-GELAN | 融合 VGG、ShuffleNet 与 YOLO 图像检测的准确性及效率再上一层!
    前言 基于YOLO的目标检测算法在速度和准确性之间取得了显著的平衡。然而,它们在脑肿瘤检测中的应用仍然未被充分探索。本研究提出了RepVGG-GELAN,这是一种新型的YOLO架构,通过集成RepVGG,一种重新参数化的卷积方法,特别关注于医学图像中的脑肿瘤检测。RepVGG-GELAN利用RepVGG架构来提......
  • 基于Azure DevOps 的 CICD 项目部署(.Net Core)
    基于AzureDevOps的CICD项目部署(.NetCore)使用微软的来进行CICD链接:https://dev.azure.com创建新项目创建项目名称选择仓库地址选择空模板创建代理池按照以下步骤把代理部署到服务器上![连接你的服务器创建新的文件夹mkdirmyange......
  • 记一次asp.net 8 服务器爆满的解决过程
    1.描述一下服务器配置:一台2c4g的centos,做api接口反代一台8c16g的windows2019作为实际服务器,跑了iis,sqlserver,mongodb,redis2.业务描述  2.0 服务器分为两个站点:importapi:用于处理数据导入,,,webapi:用于处理对用户端的数据查询  2.1从数据源采集数据后,......
  • Asp-Net-Core开发笔记:使用ActionFilterAttribute实现非侵入式的参数校验
    前言在现代应用开发中,确保API的安全性和可靠性至关重要。面向切面编程(AOP)通过将横切关注点(如验证、日志记录、异常处理)与核心业务逻辑分离,极大地提升了代码的模块化和可维护性。在ASP.NETCore中,利用ActionFilterAttribute可以方便地实现AOP的理念,能够以简洁、高效的方式进行自......
  • (报错)ROS2:WARNING:colcon.colcon_core.package_selection:ignoring unknown package
    在使用colcon编译时,如果直接对所有包编译colconbuild则不会有问题,但是针对单独某个包编译colconbuild--packages-select<pkg>则报错WARNING:colcon.colcon_core.package_selection:ignoringunknownpackagegg了一下找到了问题参考:https://unix.stackexchange.co......
  • 工业福利!用.NET快速开发物联网扫码器设备的通用扫码功能
    不管你是用.netframework还是用.netcore或者更高版本.net环境,这篇文章也许都能帮到你!因为接下来我会提供一个简单粗暴的方式,来快速实现多款扫码器的通用扫码功能。目前本地测试过的包括基恩士系列、康耐视系列、以及其他支持以太网通信的多款小众厂家等。下面开始重点操作:首先......
  • Codeforces 1113B Sasha and Magnetic Machines 题解
    题目简述有一个长度为$n$的正整数序列。你可以对这个数列进行最多$1$次的如下操作:选择两个数$i$和$j$,其中$1\leqi,j\leqn$并且$i\neqj$,并选择一个可以整除$a_i$的正整数$x$,然后将$a_i$变为$\frac{a_i}{x}$,将$a_j$变为$a_j\cdotx$。问你操作后,该序......
  • 深度学习项目-MobileNetV2水果识别模型
    FruitRecognitionDeepLearning深度学习小项目,利用CNN和MobileNetV2搭建的水果识别模型。github地址fruit为本次大作业使用的数据集。geneFruit为数据增强后的数据集。FruitRecognition为本次大作业相关代码及相关曲线热力图。项目使用conda环境进行训练,相关测试版本如下:......
  • kubernetes 源码开启 go work 模式
    为了更方便进行go项目多模块管理,go社区在gomod之后引入了go workspaces模式。kubernetes社区最近在 kubernetes源码中启用 go workspaces模式。go提出 go workspaces模式的issue,和社区 thockin 的关注 cmd/go:supportvendoringinworkspacemode·Is......