Freigeben über

Problem mit Manipulation des state-Parameters bei CIAM User Flows (Android, .NET MAUI, MSAL)

Markus Bra 0 Zuverlässigkeitspunkte
2025-07-19T21:25:16.7633333+00:00

Guten Tag,

Unsere .NET MAUI-App nutzt die Microsoft Authentication Library (MSAL) für den OAuth 2.0 Authorization Code Flow gegen Entra External ID (vormals Azure AD B2C/CIAM). Bei der Authentifizierung auf Android schlägt der Prozess mit folgender Fehlermeldung fehl:

"The authorization server returned an invalid response." (MsalServiceException, ErrorCode: authentication_failed)

Ursache (Analyse):

MSAL sendet beim Auth-Flow einen eindeutigen state-Parameter an den CIAM-Server, der laut OAuth 2.0-Spezifikation unverändert im Redirect an die Anwendung zurückgegeben werden muss.

In unserem Fall verändert der Server jedoch den state-Parameter beim Redirect, indem er eine zusätzliche GUID anhängt (Beispiel: Erwartet: 181898a0-432e-4fed-a856-ed6e3104b140 Erhalten: 181898a0-432e-4fed-a856-ed6e3104b140daf18a3d-06d8-4e75-92c3-4643df6976b3)

MSAL prüft auf exakte Übereinstimmung und verwirft daher den Flow als potenziell unsicher (CSRF-Prävention).

Reproduzierbarkeit:

Das Verhalten tritt nur auf Android (Systembrowser, Custom Tabs) auf, unter Windows funktioniert derselbe Flow einwandfrei.

Es werden User Flows verwendet, keine Custom Policies.

Keine API Connectors oder eigene Logik im Flow.

Die Tokenkonfiguration (optionale Claims) ist leer.

Die Einstellung „Öffentliche Clientflows zulassen“ steht auf "Nein".

Ausschluss von Fehlerquellen:

Der Redirect-URI und die OnNewIntent-Implementierung sind geprüft, Fehler in der App ausgeschlossen.

Die App-Registrierung ist korrekt, alle MSAL-Konfigurationswerte (ClientId, RedirectUri etc.) stimmen überein.

Fragen an den Microsoft Support:

  1. Ist es ein bekanntes oder beabsichtigtes Verhalten, dass CIAM User Flows den state-Parameter im Redirect modifizieren (z. B. auf Android)?

Gibt es Workarounds oder empfohlene Einstellungen, um die exakte Übergabe des state-Parameters zu gewährleisten?

Ist ein Update der MSAL-Library erforderlich oder gibt es eine bekannte Inkompatibilität im Zusammenspiel mit Android-Systembrowsern und CIAM User Flows?

Ohne Lösung ist ein produktiver Authentifizierungs-Flow mit CIAM User Flows auf Android aktuell nicht möglich.

Unsere .NET MAUI-App nutzt die Microsoft Authentication Library (MSAL) für den OAuth 2.0 Authorization Code Flow gegen Entra External ID (vormals Azure AD B2C/CIAM).
Bei der Authentifizierung auf Android schlägt der Prozess mit folgender Fehlermeldung fehl:

"The authorization server returned an invalid response."
(MsalServiceException, ErrorCode: authentication_failed)

Ursache (Analyse):

MSAL sendet beim Auth-Flow einen eindeutigen state-Parameter an den CIAM-Server, der laut OAuth 2.0-Spezifikation unverändert im Redirect an die Anwendung zurückgegeben werden muss.

In unserem Fall verändert der Server jedoch den state-Parameter beim Redirect, indem er eine zusätzliche GUID anhängt (Beispiel:
Erwartet: 181898a0-432e-4fed-a856-ed6e3104b140
Erhalten: 181898a0-432e-4fed-a856-ed6e3104b140daf18a3d-06d8-4e75-92c3-4643df6976b3)

MSAL prüft auf exakte Übereinstimmung und verwirft daher den Flow als potenziell unsicher (CSRF-Prävention).

Reproduzierbarkeit:

Das Verhalten tritt nur auf Android (Systembrowser, Custom Tabs) auf, unter Windows funktioniert derselbe Flow einwandfrei.

Es werden User Flows verwendet, keine Custom Policies.

Keine API Connectors oder eigene Logik im Flow.

Die Tokenkonfiguration (optionale Claims) ist leer.

Die Einstellung „Öffentliche Clientflows zulassen“ steht auf "Nein".

Ausschluss von Fehlerquellen:

Der Redirect-URI und die OnNewIntent-Implementierung sind geprüft, Fehler in der App ausgeschlossen.

Die App-Registrierung ist korrekt, alle MSAL-Konfigurationswerte (ClientId, RedirectUri etc.) stimmen überein.

Fragen an den Microsoft Support:

Ist es ein bekanntes oder beabsichtigtes Verhalten, dass CIAM User Flows den state-Parameter im Redirect modifizieren (z. B. auf Android)?

Gibt es Workarounds oder empfohlene Einstellungen, um die exakte Übergabe des state-Parameters zu gewährleisten?

Ist ein Update der MSAL-Library erforderlich oder gibt es eine bekannte Inkompatibilität im Zusammenspiel mit Android-Systembrowsern und CIAM User Flows?

**Ohne Lösung ist ein produktiver Authentifizierungs-Flow mit CIAM User Flows auf Android aktuell nicht möglich.

Gruß Markus**

Azure
Azure
Eine Cloud Computing-Plattform und -Infrastruktur für die Erstellung, Bereitstellung und Verwaltung von Anwendungen und Diensten über ein weltweites Netzwerk aus Rechenzentren, die von Microsoft verwaltetet werden.
{count} Stimmen

Ihre Antwort

Antworten können von Fragestellenden als „Angenommen“ und von Moderierenden als „Empfohlen“ gekennzeichnet werden, wodurch Benutzende wissen, dass diese Antwort das Problem des Fragestellenden gelöst hat.