You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core JWT认证中Issuer与Audience属性的作用及验证方法

JWT中Issuer与Audience的作用及验证流程

1. 两个属性的核心定义

  • Issuer(签发者):代表生成并签发这个JWT的主体,通常是你的身份认证服务/授权服务的唯一标识(比如服务域名、服务唯一名称)。作用是明确令牌的合法来源,避免第三方伪造的未知来源令牌被你的服务接受。
  • Audience(受众):代表这个JWT的目标接收方,也就是这个令牌允许被哪个业务服务/客户端使用,通常是你的业务API的唯一标识。作用是限制令牌的使用范围,避免某个业务服务的令牌被拿去调用其他不相关的服务。

注意:两个属性并不是严格对应“JWT服务端和JWT客户端”。举个例子:如果你的架构里有独立的授权服务A负责发令牌,还有订单API、用户API两个业务服务,那么Issuer统一填A的标识,订单API的Audience填订单服务的标识、用户API的Audience填用户服务的标识即可。

2. 对应代码的作用

你给出的两段代码分别对应JWT的签发阶段和校验阶段:

// 签发JWT时的配置,会把这两个值写入JWT的Payload中
var tokenDescriptor = new SecurityTokenDescriptor
{
    Issuer = configuration["Jwt:Issuer"],
    Audience = configuration["Jwt:Audience"],
    // 其他配置:过期时间、签名密钥、自定义声明等
}
// 校验JWT时的配置,开启对应开关后会自动校验两个字段的合法性
jwt.TokenValidationParameters = new TokenValidationParameters
{
    ValidateIssuer = true,
    ValidateAudience = true,
    // 其他配置:签名校验、过期时间校验等
};

3. 完整验证流程

整个校验逻辑是在收到客户端携带JWT的请求时自动执行的,步骤如下:

  1. 解析收到的JWT,提取Payload中的iss(对应Issuer)和aud(对应Audience)字段值
  2. 如果开启了ValidateIssuer = true,将提取到的iss值和服务本地配置的合法Issuer值做等值比对,不一致则直接返回401未授权
  3. 如果开启了ValidateAudience = true,将提取到的aud值和服务本地配置的合法Audience值做等值比对,不一致则直接返回401未授权
  4. 两个字段校验都通过后,才会继续执行签名、过期时间等其他校验逻辑

4. 补充说明

如果是单体应用,授权逻辑和业务API都在同一个服务中,你可以将Issuer和Audience配置为相同的值,只要签发和校验阶段的配置保持一致即可。这两个校验开关都可以手动关闭,但不推荐这么做,会增大令牌伪造、越权调用的安全风险。

内容的提问来源于stack exchange,提问作者ADev01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:57:05