负载平衡 IdentityServer4 时未找到端点条目

No endpoint entry found when load balancing IdentityServer4

我正在尝试使用 docker 个容器设置本地 nginx 负载平衡 IDS(使用混合模型和 HTTPS)。

如果我将IDS缩放到1,我可以成功登录。

当我扩展到 2 或更多时,使用循环法平衡,我在尝试登录时被重定向到登录页面。

初始登录尝试命中 IDS1,然后登录的第二个请求部分命中 IDS2,returns 出现以下错误:未找到请求路径的端点条目:/Account/Login [IdentityServer4.Hosting.EndpointRouter]

我已经验证了两个 IDS 都已启动并且 运行,如果我点击发现文档,我可以看到 nginx 循环它并且我每次都获得成功的结果。

编辑:我不再收到错误,但是当我尝试登录到 IDS2 的登录的第二个请求部分时,仍然表现得好像我不是在登录过程中一样,并将我带到登录页面。

您需要配置数据保护 API 并在两个服务中设置相同的密钥,否则 ASP.NET 将不会接受来自其他服务的 cookie。密钥用于保护和加密 cookie。

了解一下数据保护API我最近写了这个参考项目

  • AzureKeyVaultKeyRingRepository 目的是演示和展示如何在 Azure Key Vault 中存储 ASP.NET 核心数据保护 API key-ring。 (即将发布博文)

阅读有关数据保护的更多信息APIhere