Verarbeiten von SameSite-Cookieänderungen im Chrome-Browser

Was ist SameSite?

SameSite ist eine Eigenschaft, die in HTTP-Cookies festgelegt werden kann, um CSRF-Angriffe (Cross Site Request Forgery) in Webanwendungen zu verhindern:

  • Wenn SameSite auf Lax festgelegt ist, wird das Cookie in Anforderungen innerhalb derselben Website und in GET-Anforderungen von anderen Websites gesendet. Es wird nicht in domänenübergreifenden GET-Anforderungen gesendet.
  • Der Wert Strict stellt sicher, dass das Cookie nur in Anforderungen innerhalb derselben Website gesendet wird.

Standardmäßig ist der Wert SameSite in Browsern NICHT festgelegt. Daher gibt es keine Einschränkungen für Cookies, die in Anforderungen gesendet werden. Eine Anwendung muss den CSRF-Schutz durch Festlegen von Lax oder Strict gemäß Ihren Anforderungen aktivieren.

Änderungen bei SameSite und Auswirkungen auf die Authentifizierung

Aktuelle Updates der SameSite-Standards schlagen den Schutz von Apps vor, indem sie das Standardverhalten von SameSite festlegen, wenn kein Wert auf „Lax“ eingestellt ist. Diese Risikominimierung bedeutet, dass Cookies mit Ausnahme bei GET-Anforderungen von anderen Websites bei HTTP-Anforderungen eingeschränkt werden. Außerdem wird der Wert None eingeführt, um Einschränkungen für gesendete Cookies zu entfernen. Diese Updates werden in Kürze in einer kommenden Version des Chrome-Browsers veröffentlicht.

Wenn sich Web-Apps bei Microsoft Identity Platform mit dem Antwortmodus „form_post“ authentifizieren, antwortet der Anmeldeserver der Anwendung mit HTTP POST, um Token oder Authentifizierungscode zu senden. Da es sich bei dieser Anforderung um eine domänenübergreifende Anforderung handelt (von login.microsoftonline.com zu Ihrer Domäne, z. B. https://contoso.com/auth) unterliegen jetzt Cookies, die in Ihrer App festgelegt wurden, den neuen Regeln in Chrome. Bei den Cookies, die in websiteübergreifenden Szenarien verwendet werden müssen, handelt es sich um Cookies mit den Werten Status und Nonce, die auch in der Anmeldeanforderung gesendet werden. Es gibt auch noch andere Cookies, die von Microsoft Entra ID gelöscht werden, um die Sitzung zu speichern.

Wenn Sie Ihre Web-Apps nicht aktualisieren, führt dieses neue Verhalten zu Authentifizierungsfehlern.

Risikominimierung und Beispiele

Um Authentifizierungsfehler zu beheben, können Web-Apps, die sich bei der Microsoft Identity-Plattform authentifizieren, für Cookies, die bei der Ausführung domänenübergreifender Szenarien im Chrome-Browser verwendet werden, die SameSite-Eigenschaft auf None festlegen. Andere Browser (hier finden Sie eine komplette Liste) folgen dem bisherigen Verhalten von SameSite und beziehen die Cookies nicht ein, wenn SameSite=None festgelegt ist. Aus diesem Grund müssen Web-Apps zur Unterstützung der Authentifizierung auf mehreren Browsern nur für Chrome den Wert SameSite auf None festlegen und den Wert für andere Browser leer lassen.

Dieser Ansatz wird im folgenden Beispielcode veranschaulicht:

Die folgende Tabelle zeigt die Pull Requests, mit denen die SameSite-Änderungen in unseren ASP.NET- und ASP.NET Core-Beispielen umgangen wurden.

Beispiel Pull Request
Inkrementelles Tutorial zur ASP.NET Core-Web-App Same site cookie fix #261
ASP.NET MVC-Web-App-Beispiel Same site cookie fix #35
active-directory-dotnet-admin-restricted-scopes-v2 Same site cookie fix #28

Ausführliche Informationen zur Behandlung von SameSite-Cookies in ASP.NET und ASP.NET Core finden Sie auch unter:

Nächste Schritte

Erfahren Sie mehr über SameSite und das Web-App-Szenario: