Я пытаюсь понять, как зашифровать содержимое файлов cookie в ASP.NET Core 2.1.
Если я использую метод IDataProtector Protect
для шифрования содержимого cookie, я прочитал, что метод Unprotect
не сможет расшифровать, если веб-сайт будет перемещен на другой сервер, работающий в ферме серверов Azure.и т. д. Если это правда, и я не хочу использовать Redis (или перемещать ключи) и иметь возможность использовать простой метод для шифрования содержимого, как бы я поступил об этом?
Это моетекущий код (с использованием IDataProtector):
public static void SetEncryptedCookie()
{
var cookieData = new Dictionary<string, string>()
{
{ "a", "123" },
{ "b", "xyz" },
{ "c", DateTime.Now.ToString() },
{ "UserID", "unique-number-789" }
};
CookieOptions options = new CookieOptions
{
Expires = DateTime.Now.AddDays(90)
,HttpOnly = true
,Secure = true
,IsEssential = true // GDPR
,Domain = ".example.org"
};
// _dataProtector = provider.CreateProtector("somepurpose");
string protectedCookie = _dataProtector.Protect(cookieData);
// IHttpContextAccessor _accessor
// write cookie to http response
_accessor.HttpContext.Response.Cookies.Append("mycookie", protectedCookie, options);
// retrieve encrypted cookie contents.
// ##### this will fail in server farms.
var cookieEnc = _accessor.HttpContext.Request.Cookies["mycookie"];
var cookieDec = _dataProtector.Unprotect(cookieEnc);
}