【问题标题】:JWT Token .NET Core Identity Server problemJWT Token .NET Core 身份服务器问题
【发布时间】:2021-04-16 13:04:11
【问题描述】:

我正在尝试使用 OAuth 客户端凭据流保护 .NET 5.0 Web API。

我的客户端正在从 IdentityServer4 实例请求令牌并将其提供给 API。然后,当我访问端点时,API 会返回 401 错误。我注意到以下标题: WWW-Authenticate 标头包含 Bearer error=\"invalid_token\", error_description=\"The audience 'empty' is invalid\"

这表明我的 JWT 不包含受众参数。

我的 JWT 请求代码如下所示:

var tokenResponseType = await serverClient.RequestClientCredentialsTokenAsync(new                 
    ClientCredentialsTokenRequest
    {
        Address = discoveryDocument.TokenEndpoint,
        ClientId = "client_id",
        ClientSecret = "client_secret",
        Scope = "ApiOne",
    });

验证 Token 的代码在这里:

services.AddAuthentication("Bearer")
    .AddJwtBearer("Bearer", config =>
    {
        config.Authority = "https://localhost:44335/";
        config.Audience = "ApiOne";
        config.TokenValidationParameters = new TokenValidationParameters()
        {
            ValidateIssuer = true,
            ValidateActor = true,
            ValidateLifetime = true,
            ValidateAudience = true,
            ValidateIssuerSigningKey = true
        };
        config.RequireHttpsMetadata = false;
     });

我相信 JWT 令牌应该包含观众参数。当我请求 JWT 时,我找不到设置受众参数的方法。

我已使用 jwt.io 调试我的 JWT 令牌,这确认未设置受众值。我希望在请求上设置 Scope 会这样做。

【问题讨论】:

    标签: jwt identityserver4


    【解决方案1】:

    缺少的是 IdentityServer 中的 ApiScope 和 ApiResource 配置。

    首先,您需要定义一个 ApiScope,例如:

    new ApiScope(name: "ApiOneScope",
                displayName:"You can manage the ApiOne system.",
                userClaims: new List<string>{ });
    

    ApiScope 是客户端可以请求访问的范围。

    那么你需要一个 ApiResource 定义如下:

    new ApiResource()
    {
        Name = "ApiOne",   
        DisplayName = "Orders API Service",
        Scopes = new List<string> { "ApiOneScope" },
    };
    

    ApiResource 是实际的 Api,当客户端请求名为 ApiOneScope 的范围时,最终会出现在受众声明中。

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 1970-01-01
      • 2018-12-21
      • 2021-04-15
      • 2020-01-24
      • 2020-09-01
      • 2014-06-11
      • 2020-10-08
      • 2017-03-08
      相关资源
      最近更新 更多