簡體   English   中英

Kubernetes + Redis:無法解密防偽令牌

[英]Kubernetes + Redis: The antiforgery token could not be decrypted

我正在使用 Redis 數據庫在 Kubernetes 上的 .net 核心 3.0 上進行數據保護,但仍然出現以下錯誤。 有任何想法嗎?

失敗:Microsoft.AspNetCore.Antiforgery.DefaultAntiforgery[7] 反序列化令牌時引發異常。 Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException:無法解密防偽令牌。 ---> System.Security.Cryptography.CryptographicException:在密鑰環中找不到密鑰 {ffb146a1-0e5e-4f96-8566-425f7c2eb99a}。 at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus& status) at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.DangerousUnprotect(Byte[] protectedData, Boolean ignoreRevocationErrors, Boolean& requiresMigration, Boolean& wasRevoked ) 在 Microsoft.AspNetCore.Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken) 處的 Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(Byte[] protectedData) --- 內部異常堆棧跟蹤結束 --- 在 Microsoft.AspNetCore。 Microsoft.AspNetCore.Antiforgery.DefaultAntiforgery.GetCookieTokenDoesNotThrow(HttpContext httpContext) 上的 Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken)

var redis = ConnectionMultiplexer.Connect(Environment.GetEnvironmentVariable("REDIS_CONNSTR"));
services.AddDataProtection().PersistKeysToStackExchangeRedis(redis, "DataProtection-Keys");
services.AddMvc(options =>
{
    options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
});

根據以下文章中的文檔,需要設置應用程序名稱。

services.AddDataProtection()
    .PersistKeysToStackExchangeRedis(redis, "DataProtection-Keys")
    .SetApplicationName("product");

默認情況下,數據保護系統會根據應用程序的內容根路徑將應用程序彼此隔離,即使它們共享同一個物理密鑰存儲庫也是如此。 這會阻止應用程序了解彼此的受保護有效負載。

要在應用程序之間共享受保護的有效負載:

  • 在每個應用程序中使用相同的值配置 SetApplicationName。

https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview?view=aspnetcore-3.0

只是對此的進一步說明。 如果您收到 400 Bad Request 並在同一解決方案中使用 API,那么我建議您查看 IgnoreAntiforgeryToken 屬性來裝飾 CSRF 不適用的方法。

[HttpPost]
[IgnoreAntiforgeryToken]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM