0

Jedes Mal, wenn ein Docker-Image mit einer .NET Core MVC-Webanwendung gestartet wird, werden alle Authentifizierungscookies ungültig, vermutlich aufgrund eines neuen Maschinenschlüssels (der beim Signieren des Cookies) generiert werden.Persistente ASP.NET Core-Authentifizierungscookies zwischen Docker-Image-Starts

Dies könnte traditionell über das Element in der web.config einer .NET-App festgelegt werden.

This link schlägt vor, dass das DataProtection Paket würde die Rechnung passen, aber das Paket scheint das volle fette Rahmenwerk zu erfordern.

Was wäre der richtige Weg, um sicherzustellen, dass jedes Mal, wenn ein Docker-Image neu gestartet wird, vorhandene Authentifizierungs-Cookies nicht ungültig werden?

+1

Werden Cookies ungültig oder werden Sitzungen für ungültig erklärt? Halten Sie bei Sitzungen den Sitzungsstatus im Prozess oder extern? – R0MANARMY

+0

Sehen Sie sich diesen Blogbeitrag über ASP.NET Core 1.1 preview1 https://blogs.msdn.microsoft.com/webdev/2016/10/25/announcing-asp-net-core-1-1-preview-1/ in der Nähe an Das Ende davon ist eine neue Funktion zur Verwendung von Data Protection mit Redis oder Azure Storage. ASP.NET Core 1.1 ist jedoch immer noch eine Preview-Version und wird voraussichtlich im 4. Quartal 2016/Q1 2017 veröffentlicht. – Tseng

+0

Zusätzlich unterstützen sowohl aktuelle als auch 1.1 Data Protection den netstandard, siehe https://github.com/aspnet/DataProtection/blob/ 1.0.0/src/Microsoft.AspNetCore.DataProtection/project.json – Tseng

Antwort

2

Sie möchten die Schlüssel für den Datenschutz in einen dauerhaften und gemeinsam nutzbaren Speicherort setzen.

Wenn Sie auf AWS sind, können Sie mit AspNetCore.DataProtection.Aws den Schlüsselring auf S3 mit nur wenigen Zeilen Konfigurationscode setzen. Darüber hinaus können Sie AWS KMS zum Verschlüsseln der Schlüssel verwenden. Dies ist besonders nützlich, um konsistente Verschlüsselungsalgorithmen zu erzielen und den gleichen Schlüssel für verschiedene Betriebssysteme mit unterschiedlichen Standardverschlüsselungsalgorithmen wiederzuverwenden. Die KMS-Option gehört ebenfalls zur selben Bibliothek.

Wenn Sie sich auf einer anderen Plattform als AWS befinden, benötigen Sie eine andere Bibliothek oder mounten Sie ein freigegebenes Laufwerk. Aber das Konzept, den gleichen Ort für die Schlüssel zu teilen, bleibt gleich.

+0

Vielen Dank für Ihre Antwort. Ich bin wirklich auf der Suche nach einer Möglichkeit, dies direkt in die Webanwendung zu bringen, anstatt mich auf eine externe Plattform zu verlassen. In einer idealen Welt würde ich nur die Maschinen-/Entschlüsselungsschlüssel in einer Konfigurationsdatei angeben. – Polynomial

+0

Sie können dies auch tun, indem Sie manuell einen Schlüssel in das von Ihnen angegebene Verzeichnis eingeben. Beachten Sie, dass Sie die Verlängerung verwalten müssen, falls Ihre Dienste nicht vor dem Ablaufzeitraum erneut bereitgestellt werden. – thoean