docker - OpenIddict:使用 AddDevelopmentSigningCertificate()
问题描述
我使用带有隐式流的 OpenIddict 创建了一个带有 DefaultIdentity 的 Asp.Net Core 2.2 应用程序。此应用程序在 Docker 容器中运行。我正在尝试为我的开发环境使用 AddDevelopmentSigningCertificate() 选项。
services.AddOpenIddict()
.AddCore(options =>
{
options.UseEntityFrameworkCore()
.UseDbContext<ApplicationDbContext>();
})
.AddServer(options =>
{
options.UseMvc();
options.EnableAuthorizationEndpoint("/connect/authorize");
options.RegisterScopes(OpenIdConnectConstants.Scopes.Email, OpenIdConnectConstants.Scopes.Profile, OpenIddictConstants.Scopes.Roles);
options.AllowImplicitFlow();
options.DisableHttpsRequirement();
options.AddDevelopmentSigningCertificate();
options.UseJsonWebTokens();
})
.AddValidation();
然后我有一个 Asp.Net Core 2.2 Web API 应用程序也在 Docker 容器中运行。我通过 Swashbuckle 和 JWT Bearer 身份验证使用 Swagger。
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
JwtSecurityTokenHandler.DefaultOutboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.Authority = identityUrl;
options.RequireHttpsMetadata = false;
options.Audience = "supplier-service";
});
(identityUrl 是 Authorization Server Docker 容器的 Url)
但我收到以下错误:
Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException:IDX10501:签名验证失败。无法匹配键:孩子:'[PII 已隐藏]',令牌:'[PII 已隐藏]'。
我错过了什么或我做错了什么?
解决方案
AddJwtBearer 的授权选项的 url 错误。以防有人收到相同的误导性错误消息。
推荐阅读
- python - 使用 Python 将 Excel 文件上传到 Sharepoint
- php - 如何在顶部菜单中显示wordpress登录的用户名
- maven - 带有 nexus 存储库的 Maven 和 Gitlab 运行器:401 未经授权
- serverless-framework - 在无服务器离线中为 AWS APIGW 使用“完整”上下文变量
- python-3.x - 代码优化 -> 将两个函数合并为一个函数
- python - 重新排列数组,这样我就不必为 imshow 翻转它
- jupyter-notebook - Jupyter Notebook Q# 内核未连接
- ios - 词法或预处理器问题:Xcode
- r - 闪亮的 R 直方图不随滑块变化
- html - 在 Docusaurus v2 中更改默认文本颜色