首页 > 解决方案 > 身份服务器4:为什么我在调用授权控制器时收到“找不到签名密钥”

问题描述

当前运行身份服务器 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; 
            });

并使用 AddDeveloperSigningCredential。

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

标签: model-view-controlleraccess-tokenidentityidentityserver4

解决方案


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

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


推荐阅读