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

时间:2020-08-08 14:45:21

标签: .net docker identityserver4

在我的应用程序中添加NGNIX代理后,我在身份服务器4上收到奇怪的错误消息。

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

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

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

奇怪的是,整个方案对启动.net核心应用程序时所播种的用户有效。但是对于通过我的API创建的新应用失败。

任何想法或教导都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

由ASP.NET Core发出的会话cookie使用Data Protection API加密。

用于签名cookie的密钥存储在密钥环中。如果现在重新部署应用程序,并且配置不正确,则会在新的密钥环中发布新的加密密钥。

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

有关此API的信息,请参见article,有关如何配置它的信息,请参见article

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