【问题标题】:ASP.NET Core JWT Authentication Audience PropertyASP.NET Core JWT 身份验证受众属性
【发布时间】: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

以及如何验证这些

【问题讨论】:

    标签: asp.net-core authentication jwt audience


    【解决方案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

    然后,对于ValidateIssuerValidAudience 属性,如果您将值设置为ture,则会在令牌验证期间验证颁发者和受众。

    这里有一些关于在 Issuer 和 Audience 中使用 JWT 身份验证的相关文章,您可以参考它们:

    JWT Authentication In ASP.NET Core

    Authentication And Authorization In ASP.NET 5 With JWT And Swagger

    【讨论】:

      猜你喜欢
      • 2019-09-06
      • 2021-04-20
      • 2018-09-02
      • 2018-12-05
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 2021-10-16
      • 2021-12-17
      相关资源
      最近更新 更多