ASP.NET Core JWT 身份验证受众属性
Posted
技术标签:
【中文标题】ASP.NET Core JWT 身份验证受众属性【英文标题】:ASP.NET Core JWT Authentication Audience Property 【发布时间】:2021-10-27 23:00:11 【问题描述】:我是 ASP.NET Core 的新手。
我正在使用 JWT 对 Web api 进行身份验证。
在大多数在线教程的 JWT 代码中,我们可以找到如下所示的 Issuer 和 Audience 属性。
var tokenDescriptor = new SecurityTokenDescriptor
Issuer = configuration["Jwt:Issuer"],
Audience = configuration["Jwt:Audience"],
...
jwt.TokenValidationParameters = new TokenValidationParameters
ValidateIssuer = true,
ValidateAudience = true,
...
;
谁能解释一下,这两个有什么用,是用来验证 JWT Server 和 JWT Client
以及如何验证这些
【问题讨论】:
【参考方案1】:如果您注册以下服务,则身份验证中间件将代表您进行验证。
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
options.TokenValidationParameters = new TokenValidationParameters
ValidateIssuer = true,
ValidateAudience = true,
ValidIssuer = issuer // your issuer,
ValidAudience = audience // your audience
;
【讨论】:
我已经这样做了,如果我没记错的话,ValidateAudience 意味着请求必须来自同一个域,不是吗?如果是这种情况,它甚至无法从其他域工作【参考方案2】:Issuer 和 Audience 是 JWT 令牌的标准声明字段:
Issuer:标识发布 JWT 的委托人。 Audience:标识 JWT 的目标接收者。打算处理 JWT 的每个主体都必须在受众声明中使用一个值来标识自己。如果存在此声明时,处理该声明的主体未将其自身标识为 aud 声明中的值,则该 JWT 必须被拒绝。更多详细信息,您可以查看Standard fields。
然后,对于ValidateIssuer 和ValidAudience 属性,如果您将值设置为ture
,则会在令牌验证期间验证颁发者和受众。
这里有一些关于在 Issuer 和 Audience 中使用 JWT 身份验证的相关文章,您可以参考它们:
JWT Authentication In ASP.NET Core
Authentication And Authorization In ASP.NET 5 With JWT And Swagger
【讨论】:
以上是关于ASP.NET Core JWT 身份验证受众属性的主要内容,如果未能解决你的问题,请参考以下文章
使用 JWT 令牌的 ASP.NET Core 网站到 WebApi 身份验证
ASP.NET Core 5 JWT 身份验证失败,响应代码为 401