Authentifizierung und Autorisierung in Azure App ServiceAuthentication and authorization in Azure App Service

Hinweis

Derzeit wird AAD V2 (einschließlich MSAL) für Azure App Services und Azure Functions nicht unterstützt.At this time, AAD V2 (including MSAL) is not supported for Azure App Services and Azure Functions. Überprüfen Sie zu einem späteren Zeitpunkt auf dieser Seite, ob neue Informationen vorliegen.Please check back for updates.

Azure App Service bietet integrierte Authentifizierungs- und Autorisierungsunterstützung, sodass Sie für das Anmelden von Benutzern und den Zugriff auf Daten nur wenig oder keinen Code in Ihrer Web-App, RESTful-API und dem mobilen Back-End sowie in Azure Functions schreiben müssen.Azure App Service provides built-in authentication and authorization support, so you can sign in users and access data by writing minimal or no code in your web app, RESTful API, and mobile back end, and also Azure Functions. In diesem Artikel wird beschrieben, wie App Service zur Vereinfachung der Authentifizierung und Autorisierung für Ihre App beiträgt.This article describes how App Service helps simplify authentication and authorization for your app.

Eine sichere Authentifizierung und Autorisierung erfordert umfassende Sicherheitskenntnisse, u.a. zu Verbund, Verschlüsselung, Verwaltung von JSON-Webtoken (JWT) und Gewährungstypen.Secure authentication and authorization require deep understanding of security, including federation, encryption, JSON web tokens (JWT) management, grant types, and so on. App Service bietet diese Hilfsprogramme, damit Sie mehr Zeit und Energie für das Bereitstellen von geschäftlichem Nutzen für Ihre Kunden aufwenden können.App Service provides these utilities so that you can spend more time and energy on providing business value to your customer.

Hinweis

Die Nutzung von App Service für die Authentifizierung und Autorisierung ist nicht verpflichtend.You're not required to use App Service for authentication and authorization. Viele Webframeworks sind mit Sicherheitsfunktionen gebündelt und können bei Bedarf verwendet werden.Many web frameworks are bundled with security features, and you can use them if you like. Wenn Sie mehr Flexibilität benötigen, als App Service bietet, können Sie auch eigene Hilfsprogramme schreiben.If you need more flexibility than App Service provides, you can also write your own utilities.

Spezielle Informationen zu nativen mobilen Apps finden Sie unter Authentifizierung und Autorisierung in Azure Mobile Apps.For information specific to native mobile apps, see User authentication and authorization for mobile apps with Azure App Service.

So funktioniert'sHow it works

Das Modul für Authentifizierung und Autorisierung wird in der gleichen Sandbox wie Ihr Anwendungscode ausgeführt.The authentication and authorization module runs in the same sandbox as your application code. Wenn es aktiviert ist, wird es von allen eingehenden HTTP-Anforderungen durchlaufen, bevor diese von Ihrem Anwendungscode behandelt werden.When it's enabled, every incoming HTTP request passes through it before being handled by your application code.

Dieses Modul erledigt einige Dinge für Ihre App:This module handles several things for your app:

  • Authentifizierung von Benutzern mit dem angegebenen AnbieterAuthenticates users with the specified provider
  • Überprüfung, Speicherung und Aktualisierung von TokenValidates, stores, and refreshes tokens
  • Verwaltung der authentifizierten SitzungManages the authenticated session
  • Einfügen von Identitätsinformationen in AnforderungsheaderInjects identity information into request headers

Das Modul wird getrennt vom Anwendungscode ausgeführt und mithilfe von App-Einstellungen konfiguriert.The module runs separately from your application code and is configured using app settings. Weder SDKs noch bestimmte Sprachen oder Änderungen am Anwendungscode sind erforderlich.No SDKs, specific languages, or changes to your application code are required.

BenutzeransprücheUser claims

App Service stellt Ihrem Code für alle Sprachenframeworks die Ansprüche des Benutzers zur Verfügung, indem sie in die Anforderungsheader eingefügt werden.For all language frameworks, App Service makes the user's claims available to your code by injecting them into the request headers. Für ASP.NET 4.6-Apps füllt App Service die ClaimsPrincipal.Current-Eigenschaft mit Ansprüchen des authentifizierten Benutzers, sodass Sie dem standardmäßigen .NET Codemuster einschließlich des [Authorize]-Attributs folgen können.For ASP.NET 4.6 apps, App Service populates ClaimsPrincipal.Current with the authenticated user's claims, so you can follow the standard .NET code pattern, including the [Authorize] attribute. Auf ähnliche Weise füllt App Service die _SERVER['REMOTE_USER']-Variable für PHP-Apps.Similarly, for PHP apps, App Service populates the _SERVER['REMOTE_USER'] variable. Für Java-Apps sind die Ansprüche über das Tomcat-Servlet zugänglich.For Java apps, the claims are accessible from the Tomcat servlet.

Für Azure Functions wird ClaimsPrincipal.Current nicht für .NET Code extrahiert, Sie können die Benutzeransprüche jedoch in den Anforderungsheadern finden.For Azure Functions, ClaimsPrincipal.Current is not hydrated for .NET code, but you can still find the user claims in the request headers.

Weitere Informationen finden Sie unter Zugriff auf Benutzeransprüche.For more information, see Access user claims.

TokenspeicherToken store

App Service bietet einen integrierten Tokenspeicher. Dabei handelt es sich um ein Repository mit Token, die den Benutzern Ihrer Web-Apps, APIs oder nativen mobilen Apps zugeordnet sind.App Service provides a built-in token store, which is a repository of tokens that are associated with the users of your web apps, APIs, or native mobile apps. Wenn Sie die Authentifizierung für jeden Anbieter aktivieren, ist dieser Tokenspeicher sofort für Ihre App verfügbar.When you enable authentication with any provider, this token store is immediately available to your app. Wenn Ihr Anwendungscode im Auftrag des Benutzers auf Daten dieser Anbieter zugreifen muss, z.B um:If your application code needs to access data from these providers on the user's behalf, such as:

  • Beiträge in der Facebook-Chronik des authentifizierten Benutzers zu veröffentlichenpost to the authenticated user's Facebook timeline
  • Unternehmensdaten des authentifizierten Benutzers aus der Azure Active Directory Graph-API oder sogar Microsoft Graph zu lesen,read the user's corporate data from the Azure Active Directory Graph API or even the Microsoft Graph

In der Regel müssen Sie Code schreiben, um diese Token in Ihrer Anwendung zu erfassen, speichern und aktualisieren.You typically must write code to collect, store, and refresh these tokens in your application. Mit dem Tokenspeicher rufen Sie die Token bei Bedarf einfach ab und weisen App Service an, sie zu aktualisieren, wenn sie ungültig werden.With the token store, you just retrieve the tokens when you need them and tell App Service to refresh them when they become invalid.

werden die ID-, Zugriffs- und Aktualisierungstoken für die authentifizierte Sitzung zwischengespeichert und sind nur für den zugehörigen Benutzer zugänglich.The id tokens, access tokens, and refresh tokens cached for the authenticated session, and they're accessible only by the associated user.

Wenn Sie in Ihrer App nicht mit Token arbeiten müssen, können Sie den Tokenspeicher deaktivieren.If you don't need to work with tokens in your app, you can disable the token store.

Protokollierung und NachverfolgungLogging and tracing

Wenn Sie die Anwendungsprotokollierung aktivieren, werden Ablaufverfolgungen für Authentifizierung und Autorisierung direkt in den Protokolldateien angezeigt.If you enable application logging, you will see authentication and authorization traces directly in your log files. Wenn ein unerwarteter Authentifizierungsfehler angezeigt wird, können Sie alle Details dazu problemlos in den vorhandenen Anwendungsprotokollen finden.If you see an authentication error that you didn’t expect, you can conveniently find all the details by looking in your existing application logs. Wenn Sie die Ablaufverfolgung für Anforderungsfehler aktivieren, sehen Sie genau, welche Rolle das Modul für Authentifizierung und Autorisierung möglicherweise bei einer fehlgeschlagenen Anforderung gespielt hat.If you enable failed request tracing, you can see exactly what role the authentication and authorization module may have played in a failed request. Suchen Sie in den Ablaufverfolgungsprotokollen nach Verweisen auf ein Modul namens EasyAuthModule_32/64.In the trace logs, look for references to a module named EasyAuthModule_32/64.

IdentitätsanbieterIdentity providers

App Service nutzt die Verbundidentität. Dabei werden die Benutzeridentitäten und der Authentifizierungsablauf von einem externen Identitätsanbieter für Sie verwaltet.App Service uses federated identity, in which a third-party identity provider manages the user identities and authentication flow for you. Fünf Identitätsanbieter sind standardmäßig verfügbar:Five identity providers are available by default:

AnbieterProvider AnmeldungsendpunktSign-in endpoint
Azure Active DirectoryAzure Active Directory /.auth/login/aad
Microsoft-KontoMicrosoft Account /.auth/login/microsoftaccount
FacebookFacebook /.auth/login/facebook
GoogleGoogle /.auth/login/google
TwitterTwitter /.auth/login/twitter

Wenn Sie die Authentifizierung und Autorisierung mit einem dieser Anbieter aktivieren, ist der entsprechende Anmeldungsendpunkt für die Benutzerauthentifizierung und die Überprüfung von Authentifizierungstoken vom Anbieter verfügbar.When you enable authentication and authorization with one of these providers, its sign-in endpoint is available for user authentication and for validation of authentication tokens from the provider. Sie können Ihren Benutzern problemlos eine beliebige Anzahl von diesen Anmeldeoptionen bereitstellen.You can provide your users with any number of these sign-in options with ease. Außerdem können Sie einen weiteren Identitätsanbieter oder eine eigene benutzerdefinierte Identitätslösung integrieren.You can also integrate another identity provider or your own custom identity solution.

AuthentifizierungsflussAuthentication flow

Der Authentifizierungsablauf gilt für alle Anbieter, unterscheidet sich jedoch abhängig davon, ob die Anmeldung mit dem SDK des Anbieters erfolgen soll:The authentication flow is the same for all providers, but differs depending on whether you want to sign in with the provider's SDK:

  • Ohne Anbieter-SDK: Die Anwendung delegiert die Verbundanmeldung an App Service.Without provider SDK: The application delegates federated sign-in to App Service. Dies ist normalerweise bei Browser-Apps der Fall, die dem Benutzer die Anmeldeseite des Anbieters anzeigen können.This is typically the case with browser apps, which can present the provider's login page to the user. Der Servercode verwaltet den Anmeldevorgang, daher wird er auch als servergesteuerter Datenfluss oder Serverfluss bezeichnet.The server code manages the sign-in process, so it is also called server-directed flow or server flow. Dieser Fall gilt für Browser-Apps.This case applies to browser apps. Es gilt auch für native Apps, die Benutzer mithilfe des Client SDK von Mobile Apps anmelden, da das SDK eine Webansicht zum Anmelden von Benutzern mit der App Service-Authentifizierung öffnet.It also applies to native apps that sign users in using the Mobile Apps client SDK because the SDK opens a web view to sign users in with App Service authentication.
  • Mit Anbieter-SDK: Die Anwendung meldet den Benutzer manuell beim Anbieter an und sendet dann das Authentifizierungstoken zur Überprüfung an App Service.With provider SDK: The application signs users in to the provider manually and then submits the authentication token to App Service for validation. Dies ist normalerweise bei Apps ohne Browser der Fall, die dem Benutzer die Anmeldeseite des Anbieters nicht anzeigen können.This is typically the case with browser-less apps, which can't present the provider's sign-in page to the user. Der Anwendungscode verwaltet den Anmeldevorgang, daher wird er auch als clientgesteuerter Datenfluss oder Clientfluss bezeichnet.The application code manages the sign-in process, so it is also called client-directed flow or client flow. Dieser Fall gilt für REST-APIs Azure Functions und JavaScript-Browserclients sowie Browser-Apps, die eine höhere Flexibilität beim Anmeldevorgang erfordern.This case applies to REST APIs, Azure Functions, and JavaScript browser clients, as well as browser apps that need more flexibility in the sign-in process. Er gilt auch für native mobile Apps, die Benutzer mithilfe des Anbieter-SDKs anmelden.It also applies to native mobile apps that sign users in using the provider's SDK.

Hinweis

Bei Aufrufen aus einer vertrauenswürdigen Browser-App in App Service wird eine weitere REST-API in App Service aufgerufen, oder Azure Functions kann über den servergesteuerten Datenfluss authentifiziert werden.Calls from a trusted browser app in App Service calls another REST API in App Service or Azure Functions can be authenticated using the server-directed flow. Weitere Informationen finden Sie unter Anpassen der Authentifizierung und Autorisierung in App Service.For more information, see Customize authentication and authorization in App Service.

Die folgende Tabelle zeigt die Schritte des Authentifizierungsablaufs.The table below shows the steps of the authentication flow.

SchrittStep Ohne Anbieter-SDKWithout provider SDK Mit Anbieter-SDKWith provider SDK
1. Anmeldung des Benutzers1. Sign user in Client wird zu /.auth/login/<provider> umgeleitet.Redirects client to /.auth/login/<provider>. Clientcode meldet Benutzer direkt mit dem Anbieter-SDK an und erhält ein Authentifizierungstoken.Client code signs user in directly with provider's SDK and receives an authentication token. Informationen finden Sie in der Dokumentation des Anbieters.For information, see the provider's documentation.
2. Nachauthentifizierung2. Post-authentication Anbieter leitet Client zu /.auth/login/<provider>/callback um.Provider redirects client to /.auth/login/<provider>/callback. Clientcode sendet Token des Anbieters zur Überprüfung an /.auth/login/<provider>.Client code posts token from provider to /.auth/login/<provider> for validation.
3. Einrichten der authentifizierten Sitzung3. Establish authenticated session App Service fügt der Antwort ein authentifiziertes Cookie hinzu.App Service adds authenticated cookie to response. App Service gibt das eigene Authentifizierungstoken an den Clientcode zurück.App Service returns its own authentication token to client code.
4. Bereitstellen von authentifiziertem Inhalt4. Serve authenticated content Client schließt Authentifizierungscookie in nachfolgenden Anforderungen (die automatisch vom Browser verarbeitet werden) ein.Client includes authentication cookie in subsequent requests (automatically handled by browser). Clientcode stellt Authentifizierungstoken im X-ZUMO-AUTH-Header (der automatisch von Mobile Apps-Client-SDKs verarbeitet wird) bereit.Client code presents authentication token in X-ZUMO-AUTH header (automatically handled by Mobile Apps client SDKs).

Für Clientbrowser kann App Service alle nicht authentifizierten Benutzer automatisch an /.auth/login/<provider> weiterleiten.For client browsers, App Service can automatically direct all unauthenticated users to /.auth/login/<provider>. Sie können Benutzern auch einen oder mehrere /.auth/login/<provider>-Links zur Anmeldung bei Ihrer App mit dem Anbieter ihrer Wahl bereitstellen.You can also present users with one or more /.auth/login/<provider> links to sign in to your app using their provider of choice.

AutorisierungsverhaltenAuthorization behavior

Im Azure-Portal können Sie die App Service-Autorisierung mit einer Reihe von Verhaltensweisen konfigurieren, wenn eine eingehende Anforderung nicht authentifiziert ist.In the Azure portal, you can configure App Service authorization with a number of behaviors when incoming request is not authenticated.

Die folgenden Überschriften beschreiben die Optionen.The following headings describe the options.

Anonyme Anforderungen zulassen (keine Aktion)Allow Anonymous requests (no action)

Diese Option verweist die Autorisierung von nicht authentifiziertem Datenverkehr an Ihren Anwendungscode.This option defers authorization of unauthenticated traffic to your application code. Für authentifizierte Anforderungen übergibt App Service auch Authentifizierungsinformationen in den HTTP-Headern.For authenticated requests, App Service also passes along authentication information in the HTTP headers.

Diese Option bietet mehr Flexibilität bei der Verarbeitung anonymer Anforderungen.This option provides more flexibility in handling anonymous requests. Beispielsweise können Sie für Ihre Benutzer mehrere Anmeldungsanbieter bereitstellen.For example, it lets you present multiple sign-in providers to your users. Sie müssen jedoch Code schreiben.However, you must write code.

Nur authentifizierte Anforderungen zulassenAllow only authenticated requests

Die Option lautet Mit <Anbieter> anmelden.The option is Log in with <provider>. App Service leitet alle anonymen Anforderungen an /.auth/login/<provider> für den ausgewählten Anbieter um.App Service redirects all anonymous requests to /.auth/login/<provider> for the provider you choose. Wenn die anonyme Anforderung von einer nativen mobilen App stammt, wird HTTP 401 Unauthorized als Antwort zurückgegeben.If the anonymous request comes from a native mobile app, the returned response is an HTTP 401 Unauthorized.

Mit dieser Option müssen Sie in Ihrer App keinen Authentifizierungscode schreiben.With this option, you don't need to write any authentication code in your app. Eine genauere Autorisierung, z.B. rollenspezifische Autorisierung, kann durch das Untersuchen der Ansprüche des Benutzers durchgeführt werden (siehe Zugriff auf Benutzeransprüche).Finer authorization, such as role-specific authorization, can be handled by inspecting the user's claims (see Access user claims).

Achtung

Das Einschränken des Zugriffs auf diese Weise gilt für alle Aufrufe Ihrer App, was für Apps, die eine öffentlich verfügbare Startseite wünschen, eventuell nicht wünschenswert ist, wie bei vielen Single-Page-Anwendungen.Restricting access in this way applies to all calls to your app, which may not be desirable for apps wanting a publicly available home page, as in many single-page applications.

Weitere RessourcenMore resources

Tutorial: Umfassendes Authentifizieren und Autorisieren von Benutzern in Azure App Service (Windows)Tutorial: Authenticate and authorize users end-to-end in Azure App Service (Windows)
Tutorial: Umfassendes Authentifizieren und Autorisieren von Benutzern in Azure App Service für LinuxTutorial: Authenticate and authorize users end-to-end in Azure App Service for Linux
Anpassen der Authentifizierung und Autorisierung in App ServiceCustomize authentication and authorization in App Service

Anbieterspezifische Anleitungen:Provider-specific how-to guides: