Schnellstart: Hinzufügen der Microsoft Identity Platform-Anmeldung zu einer ASP.NET-Web-AppQuickstart: Add Microsoft identity platform sign-in to an ASP.NET web app

In dieser Schnellstartanleitung laden Sie ein Codebeispiel herunter und führen es aus, das zeigt, wie eine ASP.NET-Web-App Benutzer aus einer beliebigen Azure AD-Organisation (Azure Active Directory) anmelden kann.In this quickstart, you download and run a code sample that demonstrates how an ASP.NET web app can sign in users from any Azure Active Directory (Azure AD) organization.

Eine Abbildung finden Sie unter Funktionsweise des Beispiels.See How the sample works for an illustration.

VoraussetzungenPrerequisites

Registrieren und Herunterladen Ihrer Schnellstart-AppRegister and download your quickstart app

Die Schnellstartanwendung kann auf zwei Arten gestartet werden:You have two options to start your quickstart application:

Option 1: Registrieren und automatisches Konfigurieren Ihrer App und anschließendes Herunterladen des CodebeispielsOption 1: Register and auto configure your app and then download your code sample

  1. Navigieren Sie zur Umgebung des Schnellstarts Azure-Portal – App-Registrierungen.Go to the Azure portal - App registrations quickstart experience.
  2. Geben Sie einen Namen für Ihre Anwendung ein, und wählen Sie Registrieren aus.Enter a name for your application and select Register.
  3. Befolgen Sie die Anweisungen, um Ihre neue Anwendung mit einem Klick herunterzuladen und automatisch zu konfigurieren.Follow the instructions to download and automatically configure your new application for you in one click.

Option 2: Registrieren und manuelles Konfigurieren Ihrer Anwendung und des CodebeispielsOption 2: Register and manually configure your application and code sample

Schritt 1: Anwendung registrierenStep 1: Register your application

Führen Sie die folgenden Schritte aus, um Ihre Anwendung zu registrieren und Ihrer Projektmappe manuell die Registrierungsinformationen Ihrer App hinzuzufügen:To register your application and add the app's registration information to your solution manually, follow these steps:

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie im Menü am oberen Rand den Filter Verzeichnis + Abonnement  , um den Mandanten auszuwählen, für den Sie eine Anwendung registrieren möchten.
  3. Suchen Sie nach Azure Active Directory, und wählen Sie diese Option aus.Search for and select Azure Active Directory.
  4. Wählen Sie unter Verwalten Folgendes aus: App-Registrierungen > Neue Registrierung.Under Manage, select App registrations > New registration.
  5. Geben Sie unter Name einen Namen für Ihre Anwendung ein (beispielsweise ASPNET-Quickstart).Enter a Name for your application, for example ASPNET-Quickstart. Benutzern Ihrer App wird wahrscheinlich dieser Namen angezeigt. Sie können ihn später ändern.Users of your app might see this name, and you can change it later.
  6. Fügen Sie unter https://localhost:44368/ Umleitungs-URI hinzu, und wählen Sie Registrieren aus.Add https://localhost:44368/ in Redirect URI, and select Register.
  7. Wählen Sie unter Verwalten die Option Authentifizierung aus.Under Manage, select Authentication.
  8. Wählen Sie im Unterabschnitt Implizite Genehmigung die Option ID-Token aus.Under the Implicit Grant sub-section, select ID tokens.
  9. Wählen Sie Speichern aus.Select Save.

Schritt 1: Konfigurieren Ihrer Anwendung im Azure-PortalStep 1: Configure your application in Azure portal

Damit das Codebeispiel für diesen Schnellstart funktioniert, müssen Sie einen Antwort-URI als https://localhost:44368/ hinzufügen.For the code sample for this quickstart to work, you need to add a reply URL as https://localhost:44368/.

Bereits konfiguriert: Ihre Anwendung ist mit diesem Attribut konfiguriert.Already configured Your application is configured with this attribute

Schritt 2: Herunterladen Ihres ProjektsStep 2: Download your project

Führen Sie das Projekt mit Visual Studio 2019 aus.Run the project using Visual Studio 2019.

Schritt 3: Ihre App ist konfiguriert und betriebsbereitStep 3: Your app is configured and ready to run

Wir haben das Projekt mit Werten der Eigenschaften ihrer App konfiguriert.We have configured your project with values of your app's properties.

Schritt 3: Ausführen Ihres Visual Studio-ProjektsStep 3: Run your Visual Studio project

  1. Extrahieren Sie die ZIP-Datei in einen lokalen Ordner, der sich näher am Stammordner befindet, beispielsweise C:\Azure-Samples.Extract the zip file to a local folder closer to the root folder - for example, C:\Azure-Samples
  2. Öffnen Sie die Projektmappe in Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).Open the solution in Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln)
  3. Abhängig von der verwendeten Visual Studio-Version müssen Sie möglicherweise mit der rechten Maustaste auf das Projekt AppModelv2-WebApp-OpenIDConnect-DotNet und Wiederherstellen der NuGet-Pakete klicken.Depending on the version of Visual Studio, you might need to right click on the project AppModelv2-WebApp-OpenIDConnect-DotNet and Restore NuGet packages
  4. Öffnen Sie die Paket-Manager-Konsole (Anzeigen > Andere Fenster > Paket-Manager-Konsole), und führen Sie Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r aus.Open the Package Manager Console (View -> Other Windows -> Package Manager Console) and run Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
  1. Bearbeiten Sie Web.config, und ersetzen Sie die Parameter ClientId und Tenant durch Folgendes:Edit Web.config and replace the parameters ClientId and Tenant with:
    <add key="ClientId" value="Enter_the_Application_Id_here" />
    <add key="Tenant" value="Enter_the_Tenant_Info_Here" />
    
    Hierbei gilt:Where:
  • Enter_the_Application_Id_here ist die Anwendungs-ID für die von Ihnen registrierte Anwendung.Enter_the_Application_Id_here - is the Application Id for the application you registered.
  • Enter_the_Tenant_Info_Here ist eine der folgenden Optionen:Enter_the_Tenant_Info_Here - is one of the options below:
    • Unterstützt Ihre Anwendung Nur meine Organisation, ersetzen Sie diesen Wert durch die Mandanten-ID oder den Mandantennamen (etwa „contoso.onmicrosoft.com“).If your application supports My organization only, replace this value with the Tenant Id or Tenant name (for example, contoso.onmicrosoft.com)
    • Unterstützt Ihre Anwendung Konten in einem beliebigen Organisationsverzeichnis, ersetzen Sie diesen Wert durch organizations.If your application supports Accounts in any organizational directory, replace this value with organizations
    • Unterstützt Ihre Anwendung Alle Microsoft-Kontobenutzer ersetzen Sie diesen Wert durch common.If your application supports All Microsoft account users, replace this value with common

Tipp

  • Die Werte für Anwendungs-ID, Verzeichnis-ID (Mandant) und Unterstützte Kontotypen finden Sie auf der Seite Übersicht.To find the values of Application ID, Directory (tenant) ID, and Supported account types, go to the Overview page
  • Stellen Sie sicher, dass der Wert für redirectUri in Web.config dem Umleitungs-URI entspricht, der für die App-Registrierung in Azure AD definiert wurde. (Ist dies nicht der Fall, navigieren Sie zum Menü Authentifizierung für die App-Registrierung, und aktualisieren Sie den UMLEITUNGS-URI entsprechend.)Ensure the value for redirectUri in the Web.config corresponds with the Redirect URI defined for the App Registration in Azure AD (if not, navigate to the Authentication menu for the App Registration and update the REDIRECT URI to match)

Hinweis

Enter_the_Supported_Account_Info_Here

Weitere InformationenMore information

Dieser Abschnitt gibt einen Überblick über den Code, der für die Anmeldung von Benutzern erforderlich ist.This section gives an overview of the code required to sign-in users. Diese Übersicht kann hilfreich sein, um die Funktionsweise des Codes und die Hauptargumente zu verstehen und zu ermitteln, ob Sie einer vorhandenen ASP.NET Core-Anwendung eine Anmeldung hinzufügen möchten.This overview can be useful to understand how the code works, main arguments, and also if you want to add sign-in to an existing ASP.NET application.

Funktionsweise des BeispielsHow the sample works

Zeigt, wie die in diesem Schnellstart generierte Beispiel-App funktioniert

NuGet-Pakete der OWIN-MiddlewareOWIN middleware NuGet packages

Sie können die Authentifizierungspipeline mit cookiebasierter Authentifizierung über OpenID Connect in ASP.NET mit OWIN-Middlewarepaketen einrichten.You can set up the authentication pipeline with cookie-based authentication using OpenID Connect in ASP.NET with OWIN Middleware packages. Sie können diese Pakete installieren, indem Sie die folgenden Befehle in der Paket-Manager-Konsole von Visual Studio ausführen:You can install these packages by running the following commands in Visual Studio's Package Manager Console:

Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

OWIN-StartklasseOWIN Startup Class

Die OWIN-Middleware verwendet eine Startklasse, die bei der Initialisierung des Hostingprozesses ausgeführt wird.The OWIN middleware uses a startup class that runs when the hosting process initializes. In diesem Schnellstart handelt es sich um die Datei startup.cs im Stammordner.In this quickstart, the startup.cs file located in root folder. Der folgende Code zeigt die Parameter, die von diesem Schnellstart verwendet werden:The following code shows the parameter used by this quickstart:

public void Configuration(IAppBuilder app)
{
    app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

    app.UseCookieAuthentication(new CookieAuthenticationOptions());
    app.UseOpenIdConnectAuthentication(
        new OpenIdConnectAuthenticationOptions
        {
            // Sets the ClientId, authority, RedirectUri as obtained from web.config
            ClientId = clientId,
            Authority = authority,
            RedirectUri = redirectUri,
            // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it is using the home page
            PostLogoutRedirectUri = redirectUri,
            Scope = OpenIdConnectScope.OpenIdProfile,
            // ResponseType is set to request the id_token - which contains basic information about the signed-in user
            ResponseType = OpenIdConnectResponseType.IdToken,
            // ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
            // To only allow users from a single organizations, set ValidateIssuer to true and 'tenant' setting in web.config to the tenant name
            // To allow users from only a list of specific organizations, set ValidateIssuer to true and use ValidIssuers parameter
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidateIssuer = false // Simplification (see note below)
            },
            // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to OnAuthenticationFailed method
            Notifications = new OpenIdConnectAuthenticationNotifications
            {
                AuthenticationFailed = OnAuthenticationFailed
            }
        }
    );
}
Hierbei gilt:Where BESCHREIBUNGDescription
ClientId Die Anwendungs-ID der im Azure-Portal registrierten Anwendung.Application ID from the application registered in the Azure portal
Authority Der STS-Endpunkt für den zu authentifizierenden Benutzer.The STS endpoint for user to authenticate. Normalerweise https://login.microsoftonline.com/{tenant}/v2.0 für die öffentliche Cloud, wobei {tenant} der Name Ihres Mandanten, Ihre Mandanten-ID oder common für einen Verweis auf den allgemeinen Endpunkt (verwendet für mehrinstanzenfähige Anwendungen) ist.Usually https://login.microsoftonline.com/{tenant}/v2.0 for public cloud, where {tenant} is the name of your tenant, your tenant Id, or common for a reference to the common endpoint (used for multi-tenant applications)
RedirectUri Die URL, an die Benutzer nach der Authentifizierung über den Microsoft Identity Platform-Endpunkt umgeleitet werden.URL where users are sent after authentication against Microsoft identity platform endpoint
PostLogoutRedirectUri Die URL, an die Benutzer nach der Abmeldung umgeleitet werden.URL where users are sent after signing-off
Scope Die Liste der angeforderten Bereiche, getrennt durch Leerzeichen.The list of scopes being requested, separated by spaces
ResponseType Die Anforderung, dass die Antwort von der Authentifizierung ein ID-Token enthält.Request that the response from authentication contains an ID token
TokenValidationParameters Eine Liste von Parametern für die Tokenüberprüfung.A list of parameters for token validation. In diesem Fall wird ValidateIssuer auf false festgelegt, um anzugeben, dass Anmeldungen von beliebigen persönlichen oder Geschäfts-, Schul- oder Unikontotypen akzeptiert werden können.In this case, ValidateIssuer is set to false to indicate that it can accept sign-ins from any personal, or work or school account types
Notifications Eine Liste von Delegaten, die für verschiedene OpenIdConnect-Nachrichten ausgeführt werden können.A list of delegates that can be executed on different OpenIdConnect messages

Hinweis

Zur Vereinfachung dieser Schnellstartanleitung wird ValidateIssuer = false festgelegt.Setting ValidateIssuer = false is a simplification for this quickstart. In echten Anwendungen müssen Sie den Aussteller überprüfen.In real applications you need to validate the issuer. Informationen dazu finden Sie in den Beispielen.See the samples to understand how to do that.

Initiieren einer AuthentifizierungsaufforderungInitiate an authentication challenge

Sie können den Benutzer zur Anmeldung zwingen, indem Sie eine Authentifizierungsaufforderung in Ihrem Controller anfordern:You can force a user to sign in by requesting an authentication challenge in your controller:

public void SignIn()
{
    if (!Request.IsAuthenticated)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(
            new AuthenticationProperties{ RedirectUri = "/" },
            OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

Tipp

Das Anfordern einer Authentifizierungsaufforderung mit der Methode oben ist optional und wird normalerweise verwendet, wenn Sie möchten, dass auf eine Ansicht sowohl durch authentifizierte als auch durch nicht authentifizierte Benutzer zugegriffen werden kann.Requesting an authentication challenge using the method above is optional and normally used when you want a view to be accessible from both authenticated and non-authenticated users. Alternativ können Sie Controller mit der im nächsten Abschnitt beschriebenen Methode schützen.Alternatively, you can protect controllers by using the method described in the next section.

Schützen eines Controllers oder der Methode eines ControllersProtect a controller or a controller's method

Sie können einen Controller oder Controlleraktionen mithilfe des [Authorize]-Attributs schützen.You can protect a controller or controller actions using the [Authorize] attribute. Dieses Attribut schränkt den Zugriff auf den Controller oder die Aktionen ein, indem es nur authentifizierten Benutzern den Zugriff auf die Aktionen im Controller erlaubt. Dies bedeutet, dass die Authentifizierungsaufforderung automatisch erfolgt, wenn ein nicht authentifizierter Benutzer versucht, auf eine der Aktionen oder den Controller zuzugreifen, die mit dem Attribut [Authorize] versehen sind.This attribute restricts access to the controller or actions by allowing only authenticated users to access the actions in the controller, which means that authentication challenge will happen automatically when a non-authenticated user tries to access one of the actions or controller decorated by the [Authorize] attribute.

Hilfe und SupportHelp and support

Wenn Sie Hilfe benötigen, ein Problem melden möchten oder sich über Ihre Supportoptionen informieren möchten, finden Sie weitere Informationen unter Hilfe und Support für Entwickler.If you need help, want to report an issue, or want to learn about your support options, see Help and support for developers.

Nächste SchritteNext steps

Probieren Sie das ASP.NET-Tutorial aus, um eine vollständige Schritt-für-Schritt-Anleitung zum Erstellen von Anwendungen und neuen Features zu erhalten, einschließlich einer vollständigen Erläuterung dieses Schnellstarts.Try out the ASP.NET tutorial for a complete step-by-step guide on building applications and new features, including a full explanation of this quickstart.