在钥匙圈中未找到钥匙。无法验证令牌

Haf*_*med 10 .net docker identityserver4

在我的应用程序前面添加 NGNIX 代理后,我在身份服务器 4 上遇到奇怪的错误。

  1. 我的 .net core 身份服务器正在 Docker 容器上的端口 8080 上运行

  2. Ngnix代理(使用https://github.com/nginx-proxy/nginx-proxy)配置为将443路由到docker容器8080

在回调端点上成功进行身份验证后,无法验证伪造令牌。

奇怪的是,整个场景适用于我在 .net core 应用程序启动时播种的用户。但是通过我的 API 创建的新的失败了。

任何想法或教导都值得赞赏。

And*_*ndy 15

ASP.NET core 发出的会话 cookie 使用数据保护 API 进行加密。

用于签署 cookie 的密钥存储在密钥环中。如果您现在重新部署应用程序并且尚未正确配置它,则将在新密钥环中颁发新的加密密钥。

如果无法找到用于加密 cookie 的密钥,则意味着所有客户端浏览器中的现有会话 cookie 无法再解密。

请参阅这篇关于此 API 的文章以及这篇关于如何配置它的文章。

这适用于您的 IdentityServer 和客户端应用程序,因为两者都使用数据保护 API,因此两者都需要有一个永久密钥环。当您重新部署容器时,密钥环将丢失,除非您已将密钥环放置在文件系统上的某个永久卷中或以其他方式保留它。该 API 支持许多地方存储密钥环,包括数据库、redis、Azure Key Vault..