【发布时间】: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