Anwendungstypen für Microsoft Identity PlatformApplication types for Microsoft identity platform

Der Microsoft Identity Platform-Endpunkt unterstützt die Authentifizierung für eine Vielzahl moderner App-Architekturen, die alle auf den branchenüblichen Standardprotokollen OAuth 2.0 oder OpenID Connect basieren.The Microsoft identity platform endpoint supports authentication for a variety of modern app architectures, all of them based on industry-standard protocols OAuth 2.0 or OpenID Connect. Dieser Artikel beschreibt die App-Typen, die Sie unabhängig von der bevorzugten Sprache oder Plattform mithilfe von Microsoft Identity Platform erstellen können.This article describes the types of apps that you can build by using Microsoft identity platform, regardless of your preferred language or platform. Die Informationen dienen Ihrem Verständnis allgemeiner Szenarien, bevor Sie beginnen, in den Anwendungsszenarios mit Code zu arbeiten.The information is designed to help you understand high-level scenarios before you start working with the code in the application scenarios.

GrundlagenThe basics

Sie müssen jede App, die den Microsoft Identity Platform-Endpunkt verwendet, im Azure-Portal in App-Registrierungen registrieren.You must register each app that uses the Microsoft identity platform endpoint in the Azure portal App registrations. Beim App-Registrierungsvorgang werden die folgenden Werte für die App erfasst und zugewiesen:The app registration process collects and assigns these values for your app:

  • Eine Anwendungs- (bzw. Client-) ID, die Ihre App eindeutig identifiziertAn Application (client) ID that uniquely identifies your app
  • Ein Umleitungs-URI, der zum Umleiten von Antworten zurück an die App verwendet werden kannA Redirect URI that you can use to direct responses back to your app
  • Einige andere szenariospezifische Werte, wie z.B. unterstützte KontotypenA few other scenario-specific values such as supported account types

Nähere Informationen finden Sie im Artikel zum Registrieren einer App.For details, learn how to register an app.

Nach der Registrierung der App erfolgt die Kommunikation zwischen der App und Microsoft Identity Plattform durch Senden von Anforderungen an den Endpunkt.After the app is registered, the app communicates with Microsoft identity platform by sending requests to the endpoint. Wir stellen Open-Source-Frameworks und -Bibliotheken bereit, über die die Details dieser Anforderungen verarbeitet werden.We provide open-source frameworks and libraries that handle the details of these requests. Zudem können Sie auch selbst die Authentifizierungslogik implementieren, indem Sie Anforderungen an diese Endpunkte erstellen:You also have the option to implement the authentication logic yourself by creating requests to these endpoints:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token

Single-Page-Apps (JavaScript)Single-page apps (JavaScript)

Viele moderne Apps verfügen über ein Single-Page-Webanwendungs-Front-End, das in erster Linie in JavaScript geschrieben ist, häufig mit einem Framework wie Angular, React oder Vue.Many modern apps have a single-page app front end written primarily in JavaScript, often with a framework like Angular, React, or Vue. Der Microsoft Identity Platform-Endpunkt unterstützt diese Apps durch Verwendung des OpenID Connect-Protokolls zur Authentifizierung und entweder des OAuth 2.0-Flows zur impliziten Genehmigung oder des neueren OAuth 2.0-Autorisierungscodes + PKCE-Flows zur Autorisierung (siehe unten).The Microsoft identity platform endpoint supports these apps by using the OpenID Connect protocol for authentication and either OAuth 2.0 implicit grant flow or the more recent OAuth 2.0 authorization code + PKCE flow for authorization (see below).

Das folgende Flussdiagramm veranschaulicht die OAuth 2.0-Autorisierungscodegenehmigung (ohne Details zu PKCE), bei der die App einen Code vom Endpunkt authorize der Microsoft Identity Platform erhält und diesen gegen Token und Aktualisierungstoken unter Verwendung von standortübergreifenden Webanforderungen einlöst.The flow diagram below demonstrates the OAuth 2.0 authorization code grant (with details around PKCE omitted), where the app receives a code from the Microsoft identity platform authorize endpoint, and redeems it for tokens and refresh tokens using cross-site web requests. Das Aktualisierungstoken läuft nach jeweils 24 Stunden ab, und die App muss einen weiteren Code anfordern.The refresh token expires every 24 hours, and the app must request another code. Zusätzlich zum Zugriffstoken wird normalerweise über denselben Flow und/oder eine separate OpenID Connect-Anforderung (hier nicht dargestellt) auch ein id_token angefordert, das den bei der Clientanwendung angemeldeten Benutzer repräsentiert.In addition to the access token, an id_token that represents the signed-in user to the client application is typically also requested through the same flow and/or a separate OpenID Connect request (not shown here).

Diagramm des OAuth 2.0-Autorisierungscodeflows zwischen einer Single-Page-Webanwendung und dem Endpunkt des Sicherheitstokendiensts.

Ein Beispiel für dieses Szenario finden Sie unter Tutorial: Anmelden von Benutzern und Aufrufen der Microsoft Graph-API aus einer JavaScript-Single-Page-Webanwendung (SPA) mithilfe des Autorisierungscodeflusses.To see this scenario in action, check out the Tutorial: Sign in users and call the Microsoft Graph API from a JavaScript SPA using auth code flow.

Autorisierungscodeflow im Vergleich zum impliziten FlussAuthorization code flow vs. implicit flow

Während des größten Teils des Entwicklungsverlaufs von OAuth 2.0 war der implizite Fluss die empfohlene Methode zum Erstellen von Single-Page-Apps.For most of the history of OAuth 2.0, the implicit flow was the recommended way to build single-page apps. Durch den Wegfall von Cookies von Drittanbietern und die größere Aufmerksamkeit, die Sicherheitsbedenken im Zusammenhang mit dem impliziten Fluss geschenkt wurde, haben wir auf den Autorisierungscodeflow für Single-Page-Apps umgestellt.With the removal of third-party cookies and greater attention paid to security concerns around the implicit flow, we've moved to the authorization code flow for single-page apps.

Um die Kompatibilität Ihrer App in Safari und anderen datenschutzbewussten Browsern sicherzustellen, empfehlen wir nicht mehr die Verwendung des impliziten Flusses, sondern stattdessen die Verwendung des Autorisierungscodeflows.To ensure compatibility of your app in Safari and other privacy-conscious browsers, we no longer recommend use of the implicit flow and instead recommend the authorization code flow.

Web-AppsWeb apps

Bei Web-Apps (.NET, PHP, Java, Ruby, Python, Node), auf die der Benutzer über einen Browser zugreift, können Sie für die Benutzeranmeldung OpenID Connect verwenden.For web apps (.NET, PHP, Java, Ruby, Python, Node) that the user accesses through a browser, you can use OpenID Connect for user sign-in. In OpenID Connect empfängt die Web-App ein ID-Token.In OpenID Connect, the web app receives an ID token. Ein ID-Token ist ein Sicherheitstoken, das die Identität des Benutzers überprüft und Informationen über den Benutzer in Form von Ansprüchen enthält:An ID token is a security token that verifies the user's identity and provides information about the user in the form of claims:

// Partial raw ID token
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImtyaU1QZG1Cd...

// Partial content of a decoded ID token
{
    "name": "John Smith",
    "email": "john.smith@gmail.com",
    "oid": "d9674823-dffc-4e3f-a6eb-62fe4bd48a58"
    ...
}

Weitere Informationen zu verschiedenen Tokentypen, die im Microsoft Identity Plattform-Endpunkt verwendet werden, finden Sie in der Referenz zu Zugriffstoken und zu id_token.Further details of different types of tokens used in the Microsoft identity platform endpoint are available in the access token reference and id_token reference

In Webserver-Apps werden beim Authentifizierungsablauf für die Anmeldung folgende allgemeine Schritte ausgeführt:In web server apps, the sign-in authentication flow takes these high-level steps:

Zeigt den Authentifizierungsflow für Web-Apps

Sie können die Identität des Benutzers validieren, indem Sie das ID-Token mit einem öffentlichen Signaturschlüssel überprüfen, der vom Microsoft Identity Plattform-Endpunkt empfangen wird.You can ensure the user's identity by validating the ID token with a public signing key that is received from the Microsoft identity platform endpoint. Ein Sitzungscookie wird festgelegt, das zur Identifizierung des Benutzers in nachfolgenden Seitenanforderungen verwendet werden kann.A session cookie is set, which can be used to identify the user on subsequent page requests.

Um dieses Szenario in Aktion zu sehen, testen Sie die Codebeispiele in Szenario: Web-App, die Benutzer anmeldet.To see this scenario in action, try the code samples in the Web app that signs in users scenario.

Neben der einfachen Anmeldung benötigt eine Webserver-App möglicherweise Zugriff auf einen anderen Webdienst, z.B. auf eine REST-API.In addition to simple sign-in, a web server app might need to access another web service, such as a REST API. In diesem Fall wird die Webserver-App in einem kombinierten OpenID Connect- und OAuth 2.0-Vorgang ausgeführt, indem der OAuth 2.0-Autorisierungscodefluss verwendet wird.In this case, the web server app engages in a combined OpenID Connect and OAuth 2.0 flow, by using the OAuth 2.0 authorization code flow. Weitere Informationen zu diesem Szenario finden Sie in den ersten Schritten mit Web-Apps und Web-APIs.For more information about this scenario, read about getting started with web apps and Web APIs.

Web-APIsWeb APIs

Mit dem Microsoft Identity Plattform-Endpunkt können Sie Webdienste schützen, z. B. die RESTful-Web-API Ihrer App.You can use the Microsoft identity platform endpoint to secure web services, such as your app's RESTful web API. Web-APIs können auf zahlreichen Plattformen und in vielen Sprachen implementiert werden.Web APIs can be implemented in numerous platforms and languages. Sie können auch mithilfe von HTTP-Triggern in Azure Functions implementiert werden.They can also be implemented using HTTP Triggers in Azure Functions. Anstelle von ID-Token und Sitzungscookies verwendet eine Web-API ein OAuth 2.0-Zugriffstoken zum Schutz der zugehörigen Daten und zum Authentifizieren eingehender Anforderungen.Instead of ID tokens and session cookies, a web API uses an OAuth 2.0 access token to secure its data and to authenticate incoming requests. Der Aufrufer einer Web-API fügt ein Zugriffstoken wie folgt im Autorisierungsheader einer HTTP-Anforderung an:The caller of a web API appends an access token in the authorization header of an HTTP request, like this:

GET /api/items HTTP/1.1
Host: www.mywebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6...
Accept: application/json
...

Die Web-API verwendet das Zugriffstoken zum Überprüfen der Identität des API-Aufrufers und zum Extrahieren von Informationen über den Aufrufer aus Ansprüchen, die im Zugriffstoken codiert sind.The web API uses the access token to verify the API caller's identity and to extract information about the caller from claims that are encoded in the access token. Weitere Informationen zu verschiedenen Tokentypen, die im Microsoft Identity Plattform-Endpunkt verwendet werden, finden Sie in der Referenz zu Zugriffstoken und zu id_token.Further details of different types of tokens used in the Microsoft identity platform endpoint are available in the access token reference and id_token reference.

Eine Web-API kann Benutzern die Möglichkeit geben, sich für oder gegen bestimmte Funktionen oder Daten zu entscheiden, indem sie Berechtigungen erhalten, die auch Bereiche genannt werden.A web API can give users the power to opt in or opt out of specific functionality or data by exposing permissions, also known as scopes. Damit eine aufrufende App Berechtigungen für einen Bereich erhält, muss der Benutzer während eines Ablaufs seine Zustimmung für den Bereich erteilen.For a calling app to acquire permission to a scope, the user must consent to the scope during a flow. Der Microsoft Identity Plattform-Endpunkt fragt die Zustimmung des Benutzers ab und zeichnet dann die Berechtigungen in allen Zugriffstoken auf, die die Web-API empfängt.The Microsoft identity platform endpoint asks the user for permission, and then records permissions in all access tokens that the web API receives. Die Web-API überprüft das Zugriffstoken, das bei jedem Aufruf empfangen wird, und führt Autorisierungsprüfungen durch.The web API validates the access tokens it receives on each call and performs authorization checks.

Eine Web-API kann Zugriffstoken von allen App-Typen empfangen, z. B. von Webserver-Apps, Desktop-Apps, mobilen Apps, Single Page-Apps, serverseitigen Daemons und selbst von anderen Web-APIs.A web API can receive access tokens from all types of apps, including web server apps, desktop and mobile apps, single-page apps, server-side daemons, and even other web APIs. Der allgemeine Ablauf für eine Web-API sieht folgendermaßen aus:The high-level flow for a web API looks like this:

Zeigt den Authentifizierungsflow für Web-APIs

Informationen zum Schützen einer Web-API mithilfe von OAuth2-Zugriffstoken finden Sie in den Web-API-Codebeispielen in Szenario: Geschützte Web-API.To learn how to secure a web API by using OAuth2 access tokens, check out the web API code samples in the protected web API scenario.

Oftmals müssen Web-APIs auch ausgehende Anforderungen an nachgelagerte Web-APIs stellen, die von Microsoft Identity Plattform geschützt werden.In many cases, web APIs also need to make outbound requests to other downstream web APIs secured by Microsoft identity platform. Zu diesem Zweck können Web-APIs den On-Behalf-Of-Fluss nutzen, der der Web-API ermöglicht, ein eingehendes Zugriffstoken gegen ein anderes Zugriffstoken zu tauschen, das in ausgehenden Anforderungen verwendet werden soll.To do so, web APIs can take advantage of the On-Behalf-Of flow, which allows the web API to exchange an incoming access token for another access token to be used in outbound requests. Weitere Informationen finden Sie unter Microsoft Identity Plattform und On-Behalf-Of-Fluss in OAuth 2.0.For more info, see Microsoft identity platform and OAuth 2.0 On-Behalf-Of flow.

Mobile und native AppsMobile and native apps

Auf Geräten installierte Apps, z. B. mobile Apps und Desktop-Apps, benötigen häufig Zugriff auf Back-End-Dienste oder Web-APIs, die im Auftrag eines Benutzers Daten speichern und Funktionen ausführen.Device-installed apps, such as mobile and desktop apps, often need to access back-end services or web APIs that store data and perform functions on behalf of a user. Diese Apps können sich mithilfe des OAuth 2.0-Autorisierungscodeflusses bei Back-End-Diensten anmelden und die Autorisierung hinzufügen.These apps can add sign-in and authorization to back-end services by using the OAuth 2.0 authorization code flow.

Bei diesem Fluss empfängt die App bei der Anmeldung des Benutzers vom Microsoft Identity Platform-Endpunkt einen Autorisierungscode.In this flow, the app receives an authorization code from the Microsoft identity platform endpoint when the user signs in. Der Autorisierungscode stellt die Berechtigung der App zum Aufrufen von Back-End-Diensten im Namen des angemeldeten Benutzers dar.The authorization code represents the app's permission to call back-end services on behalf of the user who is signed in. Die App kann den Autorisierungscode im Hintergrund gegen ein OAuth 2.0-Zugriffstoken und ein Aktualisierungstoken austauschen.The app can exchange the authorization code in the background for an OAuth 2.0 access token and a refresh token. Die App kann mithilfe des Zugriffstokens Web-APIs in HTTP-Anforderungen authentifizieren und mithilfe des Aktualisierungstokens neue Zugriffstoken abrufen, wenn die älteren Zugriffstoken abgelaufen sind.The app can use the access token to authenticate to web APIs in HTTP requests, and use the refresh token to get new access tokens when older access tokens expire.

Zeigt den Authentifizierungsflow für native Apps

Hinweis

Wenn die Anwendung die standardmäßige Systemwebansicht verwendet, überprüfen Sie die Informationen zur Funktion „Meine Anmeldung bestätigen“ und den Fehlercode AADSTS50199 in Fehlercodes für die Azure AD-Authentifizierung und Autorisierung.If the application uses the default system webview, check the information about "Confirm My Sign-In" functionality and error code AADSTS50199 in Azure AD authentication and authorization error codes.

Daemons und serverseitige AppsDaemons and server-side apps

Apps, die Prozesse mit langer Ausführungsdauer umfassen oder ohne Benutzereingriff ausgeführt werden, benötigen auch die Möglichkeit, auf sichere Ressourcen wie Web-APIs zuzugreifen.Apps that have long-running processes or that operate without interaction with a user also need a way to access secured resources, such as web APIs. Diese Apps können mithilfe der App-Identität (anstelle der delegierten Benutzeridentität) über den OAuth 2.0-Ablauf für Clientanmeldeinformationen die Authentifizierung durchführen und Token abrufen.These apps can authenticate and get tokens by using the app's identity, rather than a user's delegated identity, with the OAuth 2.0 client credentials flow. Sie können die Identität der App mit einem geheimen Clientschlüssel oder einem Zertifikat nachweisen.You can prove the app's identity using a client secret or certificate. Weitere Informationen finden Sie unter .NET Core-Daemon-Konsolenanwendung mit Microsoft Identity Platform.For more info, see .NET Core daemon console application using Microsoft identity platform.

In diesem Flow interagiert die App direkt mit dem /token-Endpunkt, um Zugriff zu erhalten:In this flow, the app interacts directly with the /token endpoint to obtain access:

Zeigt den Authentifizierungsflow für Daemon-Apps

Informationen zum Erstellen einer Daemon-App finden Sie in der Dokumentation zu Clientanmeldeinformationen. Sie können aber auch eine .NET-Beispiel-App testen.To build a daemon app, see the client credentials documentation, or try a .NET sample app.

Nächste SchritteNext steps

Nachdem Sie nun mit den von der Microsoft Identity Platform unterstützten Anwendungstypen vertraut sind, informieren Sie sich über OAuth 2.0 und OpenID Connect, um ein besseres Verständnis der in den verschiedenen Szenarien verwendeten Protokollkomponenten zu entwickeln.Now that you're familiar with the types of applications supported by the Microsoft identity platform, learn more about OAuth 2.0 and OpenID Connect to gain an understanding of the protocol components used by the different scenarios.