身份服务器4:为啥我在调用授权控制器时收到“找不到签名密钥”
Posted
技术标签:
【中文标题】身份服务器4:为啥我在调用授权控制器时收到“找不到签名密钥”【英文标题】:identity server4: Why I receiving "The signature key was not found" when calling the authorized controller身份服务器4:为什么我在调用授权控制器时收到“找不到签名密钥” 【发布时间】:2019-03-20 13:30:31 【问题描述】:当前正在运行身份服务器 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 的东西,我不确定它是否是解决问题的正确位置。谁能给我一些提示
【问题讨论】:
能否提供 Identity Server 的日志输出? 【参考方案1】:中间件 (AddJwtBearer) 正在尝试在 id_token
中查找签名以验证权限 - .well-known/openid-configuration/jwks
密钥。可能您的令牌可能没有私钥签名。
在您的情况下,权限可能来自不同的位置(实例的克隆),该位置可能具有相同的参数,但不是签名密钥。
【讨论】:
也可能是您使用了错误的授权(克隆在不同的实例上运行)颁发的令牌。在这种情况下,每个机构的签名都会不同。以上是关于身份服务器4:为啥我在调用授权控制器时收到“找不到签名密钥”的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Lumen 中使用身份验证进行用户登录?为啥我在启动时看到“未经授权”?