- csharp/
- C# 失败:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery
C# 失败:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery
C# 失败:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery,c#,identityserver4,antiforgerytoken,linux-containers,C#,Identityserver4,Antiforgerytoken,Linux Containers,我在一个yml文件中有4个docker容器
数据库容器
Identity Server容器(带有Identity Server的asp.net核心应用程序)
Api服务器(asp.net核心应用程序)
客户端(Angular 9应用程序)
在开发windows机器上一切都很好,我将它部署在他的windows服务器上的一个客户端上,我在IIS上托管了所有应用程序,IIS上有3个不同的站点和一个单独的数据库
现在,我想将其部署到linux docker容器上,总体配置运行良好,尽管需要改进(我可以做
我在一个yml文件中有4个docker容器
数据库容器
Identity Server容器(带有Identity Server的asp.net核心应用程序)
Api服务器(asp.net核心应用程序)
客户端(Angular 9应用程序)
在开发windows机器上一切都很好,我将它部署在他的windows服务器上的一个客户端上,我在IIS上托管了所有应用程序,IIS上有3个不同的站点和一个单独的数据库
现在,我想将其部署到linux docker容器上,总体配置运行良好,尽管需要改进(我可以做到),但我遇到了以下错误,并且Identity server容器上的docker日志显示了以下错误
失败:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery[7]
反序列化令牌时引发异常。Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException:
无法解密反伪造令牌。-->
System.Security.Cryptography.CryptographyException:密钥
在钥匙圈中未找到{d7972341-6e64-467d-af09-124f5ba3e3a8}。
在
Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(字节[])
protectedData,布尔allowOperationsOnRevokedKeys,UnprotectStatus&
状态)在
Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.DangerousUnprotect(字节[])
protectedData,布尔值ignoreRevocationErrors,布尔值&
requiresMigration,Boolean&wasrecaded)位于
Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(字节[])
保护数据)在
Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgeryTokenSerializer.Deserialize(字符串
serializedToken)--内部异常堆栈跟踪的结束---at
Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgeryTokenSerializer.Deserialize(字符串
(说)在
Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery.GetCookieTokenDoesNotThrow(HttpContext
httpContext)
请记住,我将pfx文件用于Identity Server容器上的证书
我只是不明白这个关键问题是怎么来的,钥匙圈里怎么找不到这个钥匙
任何帮助或讨论都将不胜感激
成功后,我想把它部署在数字海洋上之后,再通过研究和不同的解决方案,得到一个解决方案似乎有些效果。
这篇文章的解决方案
到目前为止,基迪诺的工作还不错
我所做的只是重新创建具有所有不同端口绑定的所有容器,是的,它可以工作并生成可由Identity Server解密的正确密钥。当提供的防伪令牌不在应用程序的持久授权上时,会出现此错误。
您是实现IPersistedGrant接口还是将该信息保存在内存中?此错误是在发布后还是在重新启动服务器时出现的
一个常见的原因是将此信息存储在内存中并重新启动服务器
另一个原因是删除dbo“PersistedGrants”数据库中的信息
如果已实现IPersistedGrants接口,是否有该数据库的多个实例
我希望这对你有帮助 也许这会有所帮助是的,我之前已经讲过了,代码也存在于startup.cs文件中