model-view-controller - 身份服务器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 的东西,我不确定它是否是解决问题的正确位置。有人可以给我一些提示吗
解决方案
中间件 (AddJwtBearer) 试图在 中找到签名id_token
以验证授权 -.well-known/openid-configuration/jwks
密钥。可能您的令牌可能没有私钥签名。
在您的情况下,权限可能来自不同的位置(实例的克隆),该位置可能具有相同的参数,但不是签名密钥。
推荐阅读
- c# - 自定义 ILogger 实现设置
- bash - 使用 Azure CLI 从 bash 在 Azure VM 上运行命令
- html - Bootstrap 4.1 导航栏最大宽度和自动边距
- sql - SQlite 从表中为每个项目选择前 N 行
- jenkins-pipeline - Is it possible to run multiple stages in a parallel branch in a scripted pipeline?
- visual-studio - Visual Studio 2017 - 插入最终换行符
- javascript - How to use the same validation fields in two components?
- google-apps-script - 具有需要合并的多个相同项目的 BOM 脚本
- java - 如果与服务器的连接丢失,使用 Spring Security 是否可以从控制器注销用户
- angular - 如何在 Angular 6 的“/about”路由器中仅显示关于组件内容?