Erweiterte Verwendung der Authentifizierung und Autorisierung in Azure App ServiceAdvanced usage of authentication and authorization in Azure App Service

Dieser Artikel zeigt, wie Sie die integrierte Authentifizierung und Autorisierung in App Service anpassen und Identitäten über Ihre Anwendung verwalten.This article shows you how to customize the built-in authentication and authorization in App Service, and to manage identity from your application.

Sehen Sie sich eines der folgenden Tutorials an, um sofort loszulegen:To get started quickly, see one of the following tutorials:

Verwenden mehrerer AnmeldungsanbieterUse multiple sign-in providers

Die Portalkonfiguration bietet keine einfache Möglichkeit, Ihren Benutzern mehrere Anmeldungsanbieter (z.B. sowohl Facebook als auch Twitter) bereitzustellen.The portal configuration doesn't offer a turn-key way to present multiple sign-in providers to your users (such as both Facebook and Twitter). Allerdings lässt sich diese Funktionalität Ihrer App problemlos hinzufügen.However, it isn't difficult to add the functionality to your app. Dazu sind folgende Schritte erforderlich:The steps are outlined as follows:

Zunächst konfigurieren Sie im Azure-Portal auf der Seite Authentifizierung/Autorisierung alle Identitätsanbieter, die Sie aktivieren möchten.First, in the Authentication / Authorization page in the Azure portal, configure each of the identity provider you want to enable.

Wählen Sie für Die auszuführende Aktion, wenn die Anforderung nicht authentifiziert ist die Option Anonyme Anforderungen zulassen (keine Aktion) aus.In Action to take when request is not authenticated, select Allow Anonymous requests (no action).

Fügen Sie auf der Anmeldeseite, der Navigationsleiste oder an einer anderen Stelle in Ihrer App einen Anmeldelink für alle Anbieter hinzu, die Sie aktiviert haben (/.auth/login/<provider>).In the sign-in page, or the navigation bar, or any other location of your app, add a sign-in link to each of the providers you enabled (/.auth/login/<provider>). Beispiel:For example:

<a href="/.auth/login/aad">Log in with Azure AD</a>
<a href="/.auth/login/microsoftaccount">Log in with Microsoft Account</a>
<a href="/.auth/login/facebook">Log in with Facebook</a>
<a href="/.auth/login/google">Log in with Google</a>
<a href="/.auth/login/twitter">Log in with Twitter</a>

Wenn der Benutzer auf einen der Links klickt, wird die entsprechende Anmeldeseite geöffnet, um den Benutzer anzumelden.When the user clicks on one of the links, the respective sign-in page opens to sign in the user.

Um den Benutzer nach der Anmeldung auf eine benutzerdefinierte URL umzuleiten, verwenden Sie den post_login_redirect_url-Abfragezeichenfolgen-Parameter (nicht zu verwechseln mit der Umleitungs-URI in der Konfiguration Ihres Identitätsanbieters).To redirect the user post-sign-in to a custom URL, use the post_login_redirect_url query string parameter (not to be confused with the Redirect URI in your identity provider configuration). Zur Umleitung des Benutzers auf /Home/Index nach der Anmeldung verwenden Sie zum Beispiel den folgenden HTML-Code:For example, to navigate the user to /Home/Index after sign-in, use the following HTML code:

<a href="/.auth/login/<provider>?post_login_redirect_url=/Home/Index">Log in</a>

Überprüfen von Token von einem AnbieterValidate tokens from providers

In einer clientgeführten Anmeldung meldet die Anwendung den Benutzer manuell beim Anbieter an und sendet dann das Authentifizierungstoken zur Überprüfung an App Service. (Informationen hierzu finden Sie unter Authentifizierungsflow.)In a client-directed sign-in, the application signs in the user to the provider manually and then submits the authentication token to App Service for validation (see Authentication flow). Diese Überprüfung allein gewährt Ihnen noch keinen Zugriff auf die gewünschten App-Ressourcen. Bei erfolgreicher Überprüfung erhalten Sie jedoch ein Sitzungstoken, das Sie für den Zugriff auf App-Ressourcen verwenden können.This validation itself doesn't actually grant you access to the desired app resources, but a successful validation will give you a session token that you can use to access app resources.

Um das Anbietertoken zu überprüfen, muss die App Service-App zunächst mit dem gewünschten Anbieter konfiguriert werden.To validate the provider token, App Service app must first be configured with the desired provider. Zur Laufzeit, nachdem Sie das Authentifizierungstoken von Ihrem Anbieter abgerufen haben, posten Sie das Token zur Überprüfung unter /.auth/login/<provider>.At runtime, after you retrieve the authentication token from your provider, post the token to /.auth/login/<provider> for validation. Beispiel:For example:

POST https://<appname>.azurewebsites.net/.auth/login/aad HTTP/1.1
Content-Type: application/json

{"id_token":"<token>","access_token":"<token>"}

Das Tokenformat kann je nach Anbieter leicht variieren.The token format varies slightly according to the provider. Details finden Sie in der folgenden Tabelle:See the following table for details:

AnbieterwertProvider value Im Anforderungstext erforderlichRequired in request body KommentareComments
aad {"access_token":"<access_token>"}
microsoftaccount {"access_token":"<token>"} Die expires_in-Eigenschaft ist optional.The expires_in property is optional.
Fordern Sie beim Anfordern des Tokens von Livediensten immer den Bereich wl.basic an.When requesting the token from Live services, always request the wl.basic scope.
google {"id_token":"<id_token>"} Die authorization_code-Eigenschaft ist optional.The authorization_code property is optional. Wenn sie angegeben wird, kann sie optional auch zusammen mit der Eigenschaft redirect_uri verwendet werden.When specified, it can also optionally be accompanied by the redirect_uri property.
facebook {"access_token":"<user_access_token>"} Verwenden Sie ein gültiges Benutzerzugriffstoken aus Facebook.Use a valid user access token from Facebook.
twitter {"access_token":"<access_token>", "access_token_secret":"<acces_token_secret>"}

Wenn das Anbietertoken erfolgreich überprüft wird, gibt die API im Antworttext ein authenticationToken zurück. Dies ist Ihr Sitzungstoken.If the provider token is validated successfully, the API returns with an authenticationToken in the response body, which is your session token.

{
    "authenticationToken": "...",
    "user": {
        "userId": "sid:..."
    }
}

Sobald Sie dieses Sitzungstoken erhalten haben, können Sie auf geschützte App-Ressourcen zugreifen, indem Sie Ihren HTTP-Anforderungen den Header X-ZUMO-AUTH hinzufügen.Once you have this session token, you can access protected app resources by adding the X-ZUMO-AUTH header to your HTTP requests. Beispiel:For example:

GET https://<appname>.azurewebsites.net/api/products/1
X-ZUMO-AUTH: <authenticationToken_value>

Abmelden von einer SitzungSign out of a session

Benutzer können eine Abmeldung initiieren, indem Sie eine GET-Anforderung an den Endpunkt /.auth/logout der App senden.Users can initiate a sign-out by sending a GET request to the app's /.auth/logout endpoint. Die GET-Anforderung bewirkt Folgendes:The GET request does the following:

  • Löscht Authentifizierungscookies aus der aktuellen SitzungClears authentication cookies from the current session.
  • Löscht die Token des aktuellen Benutzers aus dem TokenspeicherDeletes the current user's tokens from the token store.
  • Führt für Azure Active Directory und Google eine serverseitige Abmeldung für den Identitätsanbieter ausFor Azure Active Directory and Google, performs a server-side sign-out on the identity provider.

Hier ist ein einfacher Abmeldungslink auf einer Webseite:Here's a simple sign-out link in a webpage:

<a href="/.auth/logout">Sign out</a>

Standardmäßig wird bei einer erfolgreichen Abmeldung der Client an die URL /.auth/logout/done weitergeleitet.By default, a successful sign-out redirects the client to the URL /.auth/logout/done. Sie können die Weiterleitungsseite nach der Abmeldung ändern, indem Sie den Abfrageparameter post_logout_redirect_uri hinzufügen.You can change the post-sign-out redirect page by adding the post_logout_redirect_uri query parameter. Beispiel:For example:

GET /.auth/logout?post_logout_redirect_uri=/index.html

Es wird empfohlen, den Wert von post_logout_redirect_uri zu codieren.It's recommended that you encode the value of post_logout_redirect_uri.

Wenn Sie vollqualifizierte URLs verwenden, muss die URL in derselben Domäne gehostet oder als zulässige externe Weiterleitungs-URL für Ihre App konfiguriert werden.When using fully qualified URLs, the URL must be either hosted in the same domain or configured as an allowed external redirect URL for your app. Im folgenden Beispiel erfolgt einer Weiterleitung an die URL https://myexternalurl.com, die nicht in derselben Domäne gehostet wird:In the following example, to redirect to https://myexternalurl.com that's not hosted in the same domain:

GET /.auth/logout?post_logout_redirect_uri=https%3A%2F%2Fmyexternalurl.com

Führen Sie den nachstehenden Befehl in der Azure Cloud Shell aus:Run the following command in the Azure Cloud Shell:

az webapp auth update --name <app_name> --resource-group <group_name> --allowed-external-redirect-urls "https://myexternalurl.com"

Beibehalten von URL-FragmentenPreserve URL fragments

Nachdem sich Benutzer bei Ihrer App anmelden, möchten sie in der Regel zum selben Abschnitt aus derselben Seite weitergeleitet werden, z.B. /wiki/Main_Page#SectionZ.After users sign in to your app, they usually want to be redirected to the same section of the same page, such as /wiki/Main_Page#SectionZ. Da URL-Fragmente (etwa #SectionZ) jedoch nie an den Server gesendet werden, werden sie standardmäßig nach Abschluss der OAuth-Anmeldung und der Weiterleitung zurück zu Ihrer App nicht beibehalten.However, because URL fragments (for example, #SectionZ) are never sent to the server, they are not preserved by default after the OAuth sign-in completes and redirects back to your app. Benutzer erhalten dadurch ein suboptimales Erlebnis, wenn sie wieder zum gewünschten Anker navigieren müssen.Users then get a suboptimal experience when they need to navigate to the desired anchor again. Diese Einschränkung betrifft alle serverseitigen Authentifizierungslösungen.This limitation applies to all server-side authentication solutions.

Bei der App Service-Authentifizierung können Sie die URL-Fragmente während der OAuth-Anmeldung beibehalten.In App Service authentication, you can preserve URL fragments across the OAuth sign-in. Legen Sie dazu die App-Einstellung WEBSITE_AUTH_PRESERVE_URL_FRAGMENT auf true fest.To do this, set an app setting called WEBSITE_AUTH_PRESERVE_URL_FRAGMENT to true. Sie können dies im Azure-Portal erledigen oder einfach den folgenden Befehl in der Azure Cloud Shell ausführen:You can do it in the Azure portal, or simply run the following command in the Azure Cloud Shell:

az webapp config appsettings set --name <app_name> --resource-group <group_name> --settings WEBSITE_AUTH_PRESERVE_URL_FRAGMENT="true"

Zugriff auf BenutzeransprücheAccess user claims

App Service übergibt Benutzeransprüche mithilfe spezieller Header an Ihre Anwendung.App Service passes user claims to your application by using special headers. Externe Anforderungen sind nicht zum Festlegen dieser Header berechtigt, sie sind also nur vorhanden, wenn sie von App Service festgelegt wurden.External requests aren't allowed to set these headers, so they are present only if set by App Service. Beispiele für solche Header wären etwa:Some example headers include:

  • X-MS-CLIENT-PRINCIPAL-NAMEX-MS-CLIENT-PRINCIPAL-NAME
  • X-MS-CLIENT-PRINCIPAL-IDX-MS-CLIENT-PRINCIPAL-ID

Anhand dieser Header kann jeder Code unabhängig von Programmiersprache oder Framework die benötigten Informationen ermitteln.Code that is written in any language or framework can get the information that it needs from these headers. Bei ASP.NET 4.6-Apps wird ClaimsPrincipal automatisch mit entsprechenden Werten festgelegt.For ASP.NET 4.6 apps, the ClaimsPrincipal is automatically set with the appropriate values.

Ihre Anwendung kann durch Aufrufen von /.auth/me auch zusätzliche Details zum authentifizierten Benutzer abrufen.Your application can also obtain additional details on the authenticated user by calling /.auth/me. Die Mobile Apps-Server-SDKs enthalten Hilfsmethoden für die Verwendung dieser Daten.The Mobile Apps server SDKs provide helper methods to work with this data. Weitere Informationen finden Sie unter Verwenden des Azure Mobile Apps SDK für Node.js sowie unter Arbeiten mit dem .NET-Back-End-Server-SDK für Azure Mobile Apps.For more information, see How to use the Azure Mobile Apps Node.js SDK, and Work with the .NET backend server SDK for Azure Mobile Apps.

Abrufen von Token in App-CodeRetrieve tokens in app code

Die anbieterspezifischen Token werden aus dem Servercode in den Anforderungsheader eingefügt, sodass Sie problemlos darauf zugreifen können.From your server code, the provider-specific tokens are injected into the request header, so you can easily access them. Die folgende Tabelle zeigt mögliche Namen von Tokenheadern:The following table shows possible token header names:

AnbieterProvider HeadernamenHeader names
Azure Active DirectoryAzure Active Directory X-MS-TOKEN-AAD-ID-TOKEN
X-MS-TOKEN-AAD-ACCESS-TOKEN
X-MS-TOKEN-AAD-EXPIRES-ON
X-MS-TOKEN-AAD-REFRESH-TOKEN
Facebook-TokenFacebook Token X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN
X-MS-TOKEN-FACEBOOK-EXPIRES-ON
GoogleGoogle X-MS-TOKEN-GOOGLE-ID-TOKEN
X-MS-TOKEN-GOOGLE-ACCESS-TOKEN
X-MS-TOKEN-GOOGLE-EXPIRES-ON
X-MS-TOKEN-GOOGLE-REFRESH-TOKEN
Microsoft-KontoMicrosoft Account X-MS-TOKEN-MICROSOFTACCOUNT-ACCESS-TOKEN
X-MS-TOKEN-MICROSOFTACCOUNT-EXPIRES-ON
X-MS-TOKEN-MICROSOFTACCOUNT-AUTHENTICATION-TOKEN
X-MS-TOKEN-MICROSOFTACCOUNT-REFRESH-TOKEN
TwitterTwitter X-MS-TOKEN-TWITTER-ACCESS-TOKEN
X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET

Senden Sie von Ihrem Clientcode (z.B. einer mobilen App oder JavaScript im Browser) eine HTTP-GET-Anforderung an /.auth/me.From your client code (such as a mobile app or in-browser JavaScript), send an HTTP GET request to /.auth/me. Der zurückgegebene JSON-Code enthält die anbieterspezifischen-Token.The returned JSON has the provider-specific tokens.

Hinweis

Zugriffstoken sind für den Zugriff auf Anbieterressourcen vorgesehen, daher sind sie nur vorhanden, wenn Sie den Anbieter mit einem geheimen Clientschlüssel konfigurieren.Access tokens are for accessing provider resources, so they are present only if you configure your provider with a client secret. Informationen zum Abrufen von Aktualisierungstoken finden Sie unter „Zugriffstoken für die Aktualisierung“.To see how to get refresh tokens, see Refresh access tokens.

Aktualisieren von Identitätsanbieter-TokenRefresh identity provider tokens

Wenn das Zugriffstoken Ihres Anbieters (nicht das Sitzungstoken) abgelaufen ist, müssen Sie den Benutzer erneut authentifizieren, bevor Sie dieses Token erneut verwenden.When your provider's access token (not the session token) expires, you need to reauthenticate the user before you use that token again. Sie können den Tokenablauf vermeiden, indem Sie einen GET-Aufruf an den /.auth/refresh-Endpunkt Ihrer Anwendung durchführen.You can avoid token expiration by making a GET call to the /.auth/refresh endpoint of your application. Bei einem Aufruf aktualisiert App Service automatisch die Zugriffstoken im Tokenspeicher für den authentifizierten Benutzer.When called, App Service automatically refreshes the access tokens in the token store for the authenticated user. Bei nachfolgenden Anforderungen von Token durch Ihren App-Code werden die aktualisierten Token abgerufen.Subsequent requests for tokens by your app code get the refreshed tokens. Damit die Tokenaktualisierung funktioniert, muss der Tokenspeicher jedoch Aktualisierungstoken für Ihren Anbieter enthalten.However, for token refresh to work, the token store must contain refresh tokens for your provider. Die jeweilige Methode zum Abrufen von Aktualisierungstoken ist von den einzelnen Anbietern dokumentiert, die folgende Liste stellt jedoch eine kurze Zusammenfassung dar:The way to get refresh tokens are documented by each provider, but the following list is a brief summary:

  • Google: Fügen Sie einen Abfragezeichenfolgen-Parameter vom Typ access_type=offline an Ihren /.auth/login/google-API-Aufruf an.Google: Append an access_type=offline query string parameter to your /.auth/login/google API call. Bei Verwendung des Mobile Apps SDK können Sie den Parameter einer der LogicAsync-Überladungen hinzufügen (siehe Google-Aktualisierungstoken).If using the Mobile Apps SDK, you can add the parameter to one of the LogicAsync overloads (see Google Refresh Tokens).
  • Facebook: Stellt keine Aktualisierungstoken bereit.Facebook: Doesn't provide refresh tokens. Langlebige Token laufen nach 60 ab (siehe Verlängern von Zugriffsschlüsseln für Seiten).Long-lived tokens expire in 60 days (see Facebook Expiration and Extension of Access Tokens).
  • Twitter: Zugriffstoken laufen nicht ab (siehe Häufig gestellte Fragen zu OAuth für Twitter).Twitter: Access tokens don't expire (see Twitter OAuth FAQ).
  • Microsoft-Konto: Wählen Sie beim Konfigurieren der Authentifizierungseinstellungen für das Microsoft-Konto den Bereich wl.offline_access aus.Microsoft Account: When configuring Microsoft Account Authentication Settings, select the wl.offline_access scope.
  • Azure Active Directory: Führen Sie in https://resources.azure.com folgende Schritte aus:Azure Active Directory: In https://resources.azure.com, do the following steps:
    1. Wählen Sie am oberen Seitenrand die Option Lesen/Schreiben aus.At the top of the page, select Read/Write.

    2. Navigieren Sie im linken Browser zu subscriptions > <Name des_Abonnements > resourceGroups > <Name_der_Ressourcengruppe> > providers > Microsoft.Web > sites > <App_Name> > config > authsettings.In the left browser, navigate to subscriptions > <subscription_name > resourceGroups > <resource_group_name> > providers > Microsoft.Web > sites > <app_name> > config > authsettings.

    3. Klicken Sie auf Edit.Click Edit.

    4. Ändern Sie die folgende Eigenschaft.Modify the following property. Ersetzen Sie <app_id> mit der ID der Azure Active Directory-Anwendung des Diensts, auf den Sie zugreifen möchten.Replace <app_id> with the Azure Active Directory application ID of the service you want to access.

      "additionalLoginParams": ["response_type=code id_token", "resource=<app_id>"]
      
    5. Klicken Sie auf Put.Click Put.

Sobald Ihr Anbieter konfiguriert ist, können Sie im Tokenspeicher das Aktualisierungstoken und die Ablaufzeit für das Zugriffstoken suchen.Once your provider is configured, you can find the refresh token and the expiration time for the access token in the token store.

Um das Zugriffstoken jederzeit zu aktualisieren, rufen Sie einfach /.auth/refresh in einer beliebigen Sprache auf.To refresh your access token at any time, just call /.auth/refresh in any language. Im folgenden Codeausschnitt wird jQuery verwendet, um Ihre Zugriffstoken aus einem JavaScript-Client zu aktualisieren.The following snippet uses jQuery to refresh your access tokens from a JavaScript client.

function refreshTokens() {
  let refreshUrl = "/.auth/refresh";
  $.ajax(refreshUrl) .done(function() {
    console.log("Token refresh completed successfully.");
  }) .fail(function() {
    console.log("Token refresh failed. See application logs for details.");
  });
}

Wenn ein Benutzer die Ihrer App gewährten Berechtigungen widerruft, schlägt Ihr Aufruf von /.auth/me möglicherweise mit der Antwort 403 Forbidden fehl.If a user revokes the permissions granted to your app, your call to /.auth/me may fail with a 403 Forbidden response. Überprüfen Sie Ihre Anwendungsprotokolle auf Details, um Fehler zu diagnostizieren.To diagnose errors, check your application logs for details.

Verlängern der Toleranzperiode für das SitzungstokenExtend session token expiration grace period

Die authentifizierte Sitzung läuft nach acht Stunden ab.The authenticated session expires after 8 hours. Nachdem eine authentifizierte Sitzung abgelaufen ist, gilt standardmäßig eine Toleranzperiode von 72 Stunden.After an authenticated session expires, there is a 72-hour grace period by default. Innerhalb dieser Toleranzperiode sind Sie berechtigt, das Sitzungstoken mit App Service zu aktualisieren, ohne den Benutzer erneut zu authentifizieren.Within this grace period, you're allowed to refresh the session token with App Service without reauthenticating the user. Rufen Sie einfach /.auth/refresh auf, wenn Ihr Sitzungstoken ungültig wird. Sie müssen den Tokenablauf nicht selbst nachverfolgen.You can just call /.auth/refresh when your session token becomes invalid, and you don't need to track token expiration yourself. Nach Ablauf der 72-stündigen Toleranzperiode muss sich der Benutzer neu anmelden, um ein gültiges Sitzungstoken zu erhalten.Once the 72-hour grace period is lapses, the user must sign in again to get a valid session token.

Wenn 72 Stunden für Sie nicht ausreichend sind, können Sie dieses Ablauffenster erweitern.If 72 hours isn't enough time for you, you can extend this expiration window. Die Erweiterung des Ablauffensters über einen langen Zeitraum kann sich erheblich auf die Sicherheit auswirken (z.B. wenn ein Authentifizierungstoken kompromittiert oder gestohlen wird).Extending the expiration over a long period could have significant security implications (such as when an authentication token is leaked or stolen). Daher wird empfohlen, den Standardwert von 72 Stunden beizubehalten oder den Ablaufzeitraum auf den kleinsten Wert festzulegen.So you should leave it at the default 72 hours or set the extension period to the smallest value.

Zum Erweitern des standardmäßigen Ablauffensters führen Sie den folgenden Befehl in Cloud Shell aus.To extend the default expiration window, run the following command in the Cloud Shell.

az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>

Hinweis

Die Toleranzperiode gilt nur für die authentifizierte App Service-Sitzung, nicht jedoch für die Token von den Identitätsanbietern.The grace period only applies to the App Service authenticated session, not the tokens from the identity providers. Es gibt keine Toleranzperiode für die abgelaufenen Anbietertoken.There is no grace period for the expired provider tokens.

Beschränken der Domäne von AnmeldekontenLimit the domain of sign-in accounts

Die Anmeldung über mehrere Domänen ist sowohl bei Microsoft-Konten als auch bei Azure Active Directory möglich.Both Microsoft Account and Azure Active Directory lets you sign in from multiple domains. Microsoft-Konten lassen beispielsweise outlook.com-, live.com- und hotmail.com-Konten zu.For example, Microsoft Account allows outlook.com, live.com, and hotmail.com accounts. Azure AD lässt eine beliebige Anzahl von benutzerdefinierten Domänen für die Anmeldekonten zu.Azure AD allows any number of custom domains for the sign-in accounts. Möglicherweise möchten Sie aber, dass Ihre Benutzer möglichst schnell direkt zu Ihrer eigenen Azure AD-Anmeldeseite (etwa contoso.com) gelangen.However, you may want to accelerate your users straight to your own branded Azure AD sign-in page (such as contoso.com). Gehen Sie folgendermaßen vor, um den Domänennamen der Anmeldekonten vorzuschlagen.To suggest the domain name of the sign-in accounts, follow these steps.

Navigieren Sie in https://resources.azure.com zu subscriptions > < Name des_ Abonnements > resourceGroups > < Name_ der_ Ressourcengruppe> > providers > Microsoft.Web > sites > < App_ Name> > config > authsettings.In https://resources.azure.com, navigate to subscriptions > <subscription_name > resourceGroups > <resource_group_name> > providers > Microsoft.Web > sites > <app_name> > config > authsettings.

Klicken Sie auf Bearbeiten, ändern Sie die folgende Eigenschaft, und klicken Sie dann auf Put.Click Edit, modify the following property, and then click Put. Achten Sie darauf, <Domänen_Name> durch die gewünschte Domäne zu ersetzen.Be sure to replace <domain_name> with the domain you want.

"additionalLoginParams": ["domain_hint=<domain_name>"]

Diese Einstellung fügt den domain_hint-Abfragezeichenfolgen-Parameter an die Umleitungs-URL der Anmeldung an.This setting appends the domain_hint query string parameter to the login redirect URL.

Wichtig

Der Client kann den domain_hint-Parameter nach dem Empfang der Umleitungs-URL entfernen und sich dann mit einer anderen Domäne anmelden.It's possible for the client to remove the domain_hint parameter after receiving the redirect URL, and then login with a different domain. Diese Funktion ist zwar komfortabel, unter Sicherheitsaspekten aber bedenklich.So while this function is convenient, it's not a security feature.

Autorisieren oder Ablehnen von BenutzernAuthorize or deny users

Während App Service den einfachsten Autorisierungsfall erledigt (also nicht authentifizierte Anforderungen ablehnt), erfordert Ihre App möglicherweise ein differenzierteres Autorisierungsverhalten, beispielsweise Einschränken des Zugriffs, sodass nur eine bestimmte Benutzergruppe Zugriff hat.While App Service takes care of the simplest authorization case (i.e. reject unauthenticated requests), your app may require more fine-grained authorization behavior, such as limiting access to only a specific group of users. Für bestimmte Fälle müssen Sie benutzerdefinierten Anwendungscode schreiben, um den Zugriff für einen angemeldeten Benutzer zuzulassen oder abzulehnen.In certain cases, you need to write custom application code to allow or deny access to the signed-in user. In anderen Fällen kann App Service oder Ihr Identitätsanbieter möglicherweise unterstützen, ohne dass Codeänderungen erforderlich sind.In other cases, App Service or your identity provider may be able to help without requiring code changes.

Serverebene (nur Windows-Apps)Server level (Windows apps only)

Für jede Windows-App können Sie das Autorisierungsverhalten des IIS-Webservers definieren, indem Sie die Datei Web.config bearbeiten.For any Windows app, you can define authorization behavior of the IIS web server, by editing the Web.config file. Linux-Apps verwenden IIS nicht und können nicht über Web.config konfiguriert werden.Linux apps don't use IIS and can't be configured through Web.config.

  1. Navigieren Sie zu https://<app-name>.scm.azurewebsites.net/DebugConsole.Navigate to https://<app-name>.scm.azurewebsites.net/DebugConsole

  2. Navigieren Sie im Browser-Explorer Ihrer App Service-Dateien zu site/wwwroot.In the browser explorer of your App Service files, navigate to site/wwwroot. Wenn keine Web.config-Datei vorhanden ist, erstellen Sie diese, indem Sie + > Neue Datei auswählen.If a Web.config doesn't exist, create it by selecting + > New File.

  3. Wählen Sie das Freihandwerkzeug für Web.config. aus, um die Datei zu bearbeiten.Select the pencil for Web.config to edit it. Fügen Sie den folgenden Konfigurationscode hinzu, und klicken Sie auf Speichern.Add the following configuration code and click Save. Wenn Web.config bereits vorhanden ist, fügen Sie einfach das <authorization>-Element mit allen zugehörigen Werten hinzu.If Web.config already exists, just add the <authorization> element with everything in it. Fügen Sie die Konten, die Sie zulassen möchten, im <allow>-Element hinzu.Add the accounts you want to allow in the <allow> element.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
       <system.web>
          <authorization>
            <allow users="user1@contoso.com,user2@contoso.com"/>
            <deny users="*"/>
          </authorization>
       </system.web>
    </configuration>
    

IdentitätsanbieterebeneIdentity provider level

Der Identitätsanbieter kann eine bestimmte fertige Autorisierung bereitstellen.The identity provider may provide certain turn-key authorization. Beispiel:For example:

AnwendungsschichtApplication level

Wenn keine der anderen Ebenen die erforderliche Autorisierung bereitstellt, oder wenn Ihre Plattform oder Ihr Identitätsanbieter nicht unterstützt wird, müssen Sie benutzerdefinierten Code schreiben, um Benutzer anhand der Benutzeransprüche zu autorisieren.If either of the other levels don't provide the authorization you need, or if your platform or identity provider isn't supported, you must write custom code to authorize users based on the user claims.

Nächste SchritteNext steps