Identity server4:为什么在调用授权控制器时收到“未找到签名密钥”

Lit*_*nny 3 model-view-controller identity access-token identityserver4

当前正在运行身份服务器 4 并且能够使用 client_credential 流接收访问令牌。

我使用令牌从服务器访问 api 但收到此消息

error="invalid_token", error_description="未找到签名密钥"

我怀疑在调用 Web api 时传递令牌时需要以某种方式验证令牌。

我的设置是这样的。

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
    .AddJwtBearer(options =>
    {
        options.Authority = Configuration.GetValue<string>("ApiAuthorityBaseUrl");
        options.Audience = "api1";
        options.RequireHttpsMetadata = false; 
    });
         
Run Code Online (Sandbox Code Playgroud)

并使用 AddDeveloperSigningCredential。

AddJwtBearer 中有一个名为 TokenValidationParameters 的东西,我不确定它是否是解决问题的正确位置。有人可以给我一些提示吗

Jay*_*Jay 6

中间件(AddJwtBearer)试图找到签名以id_token验证授权.well-known/openid-configuration/jwks密钥。您的令牌可能没有私钥签名。

在您的情况下,权限可能来自不同的位置(实例的克隆),它可能具有相同的参数,但不是签名密钥。