ASP.NET Core 3.1中使用JWT身份认证

本文介绍了ASP.NET Core 3.1中如何使用JWT进行身份认证,包括Authentication与Authorization的区别、认证流程,以及详细步骤:安装JwtBearer和Swashbuckle.AspNetCore包,配置身份验证服务,添加Swagger,最后通过测试验证JWT的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0、引言

若不清楚什么是JWT的请先了解下什么是JWT

1、关于Authentication与Authorization

我相信在aspnet core中刚接触甚至用了段时间这两个概念的时候都是一头雾水的,傻傻分不清。
认证(Authentication)和授权(Authorization)在概念上比较的相似,且又有一定的联系,因此很容易混淆。
认证(Authentication)是指验证用户身份的过程,即当用户要访问受保护的资源时,将其信息(如用户名和密码)发送给服务器并由服务器验证的过程。
授权(Authorization)是验证一个已通过身份认证的用户是否有权限做某件事情的过程。
有过RBAC的开发经验者来说这里可以这么通俗的来理解:认证是验证一个用户是否“合法”(一般就是检查数据库中是否有这么个用户),授权是验证这个用户是否有做事情的权限(简单理解成RBAC中的用户权限)。

2、整个认证流程是怎样的?

整个HTTP请求流程
从图中可以看到整个认证、授权的流程,先进行身份验证 ,验证通过后将Token放回给客户端,客户端访问资源的时候请求头中添加Token信息,服务器进行验证并于授权是否能够访问该资源。

3、开始JWT身份认证

3.1 安装JwtBearer包

在.csproj项目中添加JWT包(这里添加有很多种方式,自行选择)

<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.3" />
3.2 安装Swashbuckle.AspNetCore包

这里便于进行测试,引入Swagger工具。

<PackageReference Include="Swashbuckle.AspNetCore" Version="5.3.1" />
3.3 添加身份认证相关服务到容器中
services.AddAuthentication(options =>
{
   
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
   
    options.TokenValidationParameters = new TokenValidationParameters
    {
   
        ValidateIssuer = false,
        ValidateAudience = false,
        ValidateLifetime = false,
        ValidateIssuerSigningKey = true,
        ValidIssuer = "jonny",
        ValidAudience = "jonny",
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("secretsecretsecret"))
    };
});

说明

配置项 类型 说明
ValidateIssuerSigningKey bool 是否调用对签名securityToken的SecurityKey进行验证。
ValidIssuer string 将用于检查令牌的发行者是否与此发行者相同。
ValidateIssuer bool 是否验证发行者
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值