asp.net-core - 负载平衡 IdentityServer4 时未找到端点条目
问题描述
我正在尝试使用 docker 容器设置本地 nginx 负载平衡 IDS(使用混合模型和 HTTPS)。
如果我将 IDS 缩放到 1,我可以成功登录。
当我使用循环样式平衡扩展到 2 或更多时,我在尝试登录时被重定向到登录页面。
初始登录尝试命中 IDS1,然后登录的第二个请求部分命中 IDS2,这将返回以下错误:No endpoint entry found for request path: /Account/Login [IdentityServer4.Hosting.EndpointRouter]
我已经验证了两个 IDS 都已启动并正在运行,如果我点击发现文档,我可以看到 nginx 轮询它,并且每次都能获得成功的结果。
编辑:我不再收到错误消息,但是当我尝试登录进入 IDS2 的登录的第二个请求部分时,仍然表现得好像我不是在登录过程中并带我进入登录页面。
解决方案
您需要配置数据保护 API 并在两个服务中设置相同的密钥,否则 ASP.NET 将不会接受来自其他服务的 cookie。密钥用于保护和加密 cookie。
为了了解数据保护 API,我最近编写了这个参考项目
- AzureKeyVaultKeyRingRepository 目的是演示和展示如何在 Azure Key Vault 中存储 ASP.NET Core Data Protection API 密钥环。(即将发布博文)
在此处阅读有关数据保护 API 的更多信息
推荐阅读
- c# - 使用 Web API 自定义属性将 JSON 响应更改为 Pascal 案例
- statistics - 平均平方误差和均方误差有什么区别?ASE / MSE 越低,模型越好吗?
- r - 如何使用正态分布的误差和均匀分布的随机变量在 R 中制作回归线
- vb.net - 使用 sqlitedataadapter 将日期列保存到基础数据库时出错
- shell - 为什么这些基于哈希的重复过滤器的工作方式与排序不同?uniq 和 sort -u?
- php - 如何使 Mysql 查询不区分大小写?
- r - 如何将data.frame转换为R中的xts?
- css - 条件文档:如何根据几个类显示可选部分
- ruby-on-rails - Elasticsearch 所有格英语词干查询不返回任何命中
- python - 为什么我的 items 模块没有正确导入?