Verwirrt von Sign-in Flows? Microsoft Entra Authentication Flows vergleichen

Veröffentlicht am:

Microsoft Entra ID unterstuetzt viele Wege, um Benutzer, Apps, Workloads und Geraete anzumelden.

Nutze diesen Trip als Karte, bevor du einen Flow auswaehlst.

Umfang verstehen

Authentication Flows beantworten unterschiedliche Fragen:

Wer meldet sich an?
Ist ein Benutzer anwesend?
Ist es ein Browser, eine Mobile App, CLI, Backend-Service oder Workload?
Braucht die App nur Sign-in oder auch API-Zugriff?
Kann die Workload Managed Identity oder Federation statt Secret verwenden?

Waehle einen Flow nicht nur, weil er in einer Demo funktioniert. Waehle den Flow, der zum App-Typ und zur Security Boundary passt.

Schnelle Entscheidungstabelle

Szenario Verwende diesen Flow Grundidee
Server-side Web App meldet Benutzer an Authorization Code Flow Browser erhaelt Code, Backend tauscht ihn gegen Tokens
Single-page App meldet Benutzer an Authorization Code Flow mit PKCE Browser erhaelt Code, App tauscht ihn mit PKCE
CLI oder Geraet ohne einfache Browser-Eingabe Device Code Flow Benutzer meldet sich auf einem anderen Geraet mit Code an
Backend-Service ruft API als sich selbst auf Client Credentials Flow App verwendet eigene Identitaet, keinen Benutzer
Azure Workload ruft Azure Resource auf Managed Identity Azure stellt die Workload-Identitaet bereit
GitHub oder Azure DevOps Pipeline ruft Azure auf Workload Identity Federation CI/CD tauscht externes Token gegen Entra Token
API ruft andere API fuer angemeldeten Benutzer auf On-behalf-of Flow API tauscht eingehendes User Token gegen Downstream API Token
SaaS App braucht Enterprise SSO SAML oder OIDC Entra beweist die Benutzeridentitaet gegenueber der SaaS App
Legacy Browser App gibt Tokens direkt zurueck Implicit oder Hybrid Flow Token kommt durch den Browser zurueck; fuer neue Apps vermeiden

User Sign-in Flows

Authorization Code Flow

Verwende ihn fuer server-side Web Apps.

Der Browser meldet den Benutzer an, aber die Backend-App erhaelt den Authorization Code und tauscht ihn gegen Tokens.

Benutzer oeffnet App
> App leitet Browser zu Entra um
> Benutzer meldet sich an
> Entra leitet Browser mit Code zurueck
> Backend tauscht Code gegen Tokens
> App erstellt Session

Das ist die normale Wahl fuer klassische Web Apps, weil Tokens auf dem Server bleiben koennen.

Authorization Code Flow mit PKCE

Verwende ihn fuer Single-page Apps, Mobile Apps und Public Clients.

PKCE schuetzt den Code Exchange, wenn die App kein Client Secret sicher speichern kann.

App erstellt Code Verifier und Challenge
> Benutzer meldet sich an
> Entra gibt Code zurueck
> App tauscht Code mit Code Verifier

Das ist der moderne Ersatz fuer Implicit Flow in browserbasierten Apps.

Device Code Flow

Verwende ihn fuer Command-line Tools, Skripte oder Geraete, bei denen Browser Sign-in umstaendlich ist.

CLI zeigt Code
> Benutzer oeffnet Browser auf anderem Geraet
> Benutzer gibt Code ein und meldet sich an
> CLI erhaelt Tokens

Device Code Flow ist user-delegated. Die CLI handelt mit den Berechtigungen des angemeldeten Benutzers.

Implicit und Hybrid Flow

Verwende ihn nur fuer Legacy Apps.

Implicit Flow gibt Tokens direkt durch den Browser zurueck.

response_type=id_token

Hybrid Flow mischt Code Flow mit direkter Token-Rueckgabe.

response_type=code id_token

Fuer neue Apps verwende Authorization Code Flow mit PKCE.

App- und Workload-Flows

Client Credentials Flow

Verwende ihn, wenn ein Backend-Service eine API als sich selbst aufruft.

Es gibt keinen Benutzer.

App authentifiziert sich mit Secret oder Zertifikat
> Entra stellt App-only Token aus
> App ruft API auf

Verwende Zertifikate statt Client Secrets, wenn moeglich. Fuer Azure-gehostete Workloads ist Managed Identity vorzuziehen.

Managed Identity

Verwende sie, wenn eine Azure Resource eine andere Azure-geschuetzte Resource aufrufen muss.

Azure Resource hat Managed Identity
> App fragt Azure nach Token
> kein Secret in Code oder Pipeline gespeichert

Managed Identity ist die sauberste Option fuer Workloads in Azure, weil die Plattform die Credential Rotation uebernimmt.

Workload Identity Federation

Verwende sie, wenn eine externe Workload Azure-Zugriff ohne gespeichertes Secret braucht.

Typische Beispiele:

GitHub Actions
Azure DevOps Pipelines
Kubernetes Workloads

Die externe Plattform stellt ein Token aus. Microsoft Entra vertraut diesem Token und tauscht es gegen ein Entra Access Token.

Pipeline erhaelt externes Token
> Entra validiert Issuer, Subject und Audience
> Entra stellt Access Token aus

Das vermeidet langlebige Client Secrets in CI/CD.

API Delegation Flow

On-Behalf-Of Flow

Verwende ihn, wenn ein Benutzer bei einer API angemeldet ist und diese API eine weitere API als derselbe Benutzer aufrufen muss.

Benutzer meldet sich beim Frontend an
> Frontend ruft API A mit User Token auf
> API A tauscht Token mit On-behalf-of Flow
> API A ruft API B als Benutzer auf

Verwende das fuer delegated API chains. Ersetze es nicht durch App-only Permissions, ausser der Downstream Call soll den Benutzerkontext ignorieren.

Enterprise SSO Optionen

OIDC SSO

OIDC bedeutet OpenID Connect.

Fuer moderne SaaS- und Custom Apps verwendet OIDC normalerweise Authorization Code Flow:

SaaS leitet Benutzer zu Entra um
> Entra gibt Code an SaaS zurueck
> SaaS tauscht Code gegen ID Token
> SaaS meldet Benutzer an

Das ID Token beweist, wer der Benutzer ist.

SAML SSO

SAML ist haeufig bei Enterprise SaaS Applications.

SaaS leitet Benutzer zu Entra um
> Entra authentifiziert Benutzer
> Entra sendet SAML Assertion an SaaS
> SaaS meldet Benutzer an

SAML ist aelter, XML-basiert und fuer Enterprise SSO weiterhin sehr verbreitet.

Tokens, die du sehen wirst

Token oder Wert Bedeutung
Authorization Code Temporaerer Wert, der an die Redirect URI zurueckgegeben und gegen Tokens getauscht wird
ID Token Beweist, wer der angemeldete Benutzer ist
Access Token Autorisiert Zugriff auf eine API
Refresh Token Erlaubt einer App, neue Tokens zu holen, ohne den Benutzer erneut anzumelden
Client Secret Passwortaehnliches Credential fuer eine App; vermeiden, wenn bessere Optionen existieren
Zertifikat Staerkeres App Credential als ein Secret
Federated Credential Trust Relationship fuer ein externes Workload Token

Haeufige Fehler

  • Client Credentials verwenden, obwohl die App als Benutzer handeln soll
  • delegated User Flow verwenden, obwohl kein Benutzer anwesend ist
  • Secrets in CI/CD speichern, statt Federation zu verwenden
  • Implicit Flow fuer eine neue SPA verwenden
  • App Assignment mit API Permissions verwechseln
  • denken, dass ein erfolgreicher Sign-in korrekte App-Autorisierung beweist
  • breite Graph Permissions anfordern, obwohl nur Sign-in benoetigt wird

Praktische Regel

Beginne mit dem Actor:

Benutzer anwesend? -> Authorization Code, PKCE oder Device Code
Kein Benutzer? -> Client Credentials, Managed Identity oder Workload Federation
API ruft API fuer Benutzer auf? -> On-behalf-of
SaaS SSO? -> OIDC oder SAML
Legacy Browser Token Return? -> Implicit/Hybrid, fuer neue Apps vermeiden

Die meiste Verwirrung verschwindet, sobald du Authentication, Consent, App Assignment und API Authorization trennst.