0

Каждый раз, когда запускается изображение Docker, содержащее веб-приложение .NET Core MVC, все файлы cookie для проверки подлинности становятся недействительными, по-видимому, из-за нового машинного ключа (который используется при подписании cookie).Персистентные файлы cookie ASP.NET Core между запусками изображений докеров

Это можно традиционно установить через элемент <machineKey/> в web.config приложения .NET.

This link предполагает, что пакет DataProtection будет соответствовать векселю, но пакет, кажется, требует полной жирной структуры.

Что было бы правильным способом гарантировать, что каждый раз, когда изображение Docker перезагружается, не отменяет существующих файлов cookie?

+1

Являются ли файлы cookie недействительными или являются сессиями недействительными? Если сеансы, вы сохраняете состояние сеанса в процессе или извне? – R0MANARMY

+0

Посмотрите на это сообщение в блоге об ASP.NET Core 1.1 preview1 https://blogs.msdn.microsoft.com/webdev/2016/10/25/announcing-asp-net-core-1-1-preview-1/ рядом в конце этого есть новая функция об использовании DataProtection с Redis или Azure Storage. Тем не менее, ASP.NET Core 1.1 по-прежнему является версией предварительного просмотра и ожидается, что будет выпущен Q4 2016/Q1 2017 – Tseng

+0

Кроме того, как текущие, так и 1.1 DataProtection поддерживают netstandard, см. Https://github.com/aspnet/DataProtection/blob/ 1.0.0/src/Microsoft.AspNetCore.DataProtection/project.json – Tseng

ответ

2

Вы хотите поместить ключи для защиты данных в постоянное и общедоступное местоположение.

Если вы находитесь на AWS, AspNetCore.DataProtection.Aws позволяет поставить брелок на S3 всего несколькими строками кода конфигурации. Кроме того, вы можете использовать AWS KMS для шифрования ключей, что особенно полезно для достижения согласованных алгоритмов шифрования, что позволяет повторно использовать один и тот же ключ в разных операционных системах, которые имеют разные алгоритмы шифрования по умолчанию. Опция KMS также является частью одной и той же библиотеки.

Если вы находитесь на другой платформе, нежели AWS, вам понадобится другая библиотека или подключите общий диск. Но концепция совместного использования одного и того же места для ключей остается неизменной.

+0

Большое спасибо за ваш ответ. Я действительно ищу способ разместить это прямо в веб-приложении, а не полагаться на внешнюю платформу. В идеальном мире я бы просто указал ключи машины/дешифрования в файле конфигурации. – Polynomial

+0

Вы можете сделать это, вручную поместив ключ в указанный вами каталог. Обратите внимание, что вам нужно будет управлять обновлением, если ваши службы не будут переведены до истечения срока действия. – thoean

 Смежные вопросы

  • Нет связанных вопросов^_^