Schnellstart: Benutzeranmeldung und Aufrufen der Microsoft Graph-API aus einer ASP.NET-Webanwendung

In dieser Schnellstartanleitung laden Sie ein Codebeispiel herunter und führen es aus. Es zeigt, wie ein*e ASP.NET-Web-App Benutzer*in mit Microsoft Entra-Konten anmelden kann.

Eine Abbildung finden Sie unter Funktionsweise des Beispiels.

Voraussetzungen

Registrieren und Herunterladen der App

Tipp

Die Schritte in diesem Artikel können je nach dem Portal, mit dem Sie beginnen, geringfügig variieren.

Sie haben zwei Möglichkeiten, mit der Anwendungserstellung zu beginnen: automatische oder manuelle Konfiguration.

Automatische Konfiguration

Wenn Sie die App automatisch konfigurieren und dann das Codebeispiel herunterladen möchten, führen Sie die folgenden Schritte aus:

  1. Melden Sie sich mindestens als Cloudanwendungsadministrator bei der Schnellstartbenutzeroberfläche des Microsoft Entra Admin Centers an.
  2. Geben Sie einen Namen für Ihre Anwendung ein, und wählen Sie Registrieren aus.
  3. Befolgen Sie die Anweisungen, um Ihre neue Anwendung mit einem Klick herunterzuladen und automatisch zu konfigurieren.

Manuelle Konfiguration

Wenn Sie die Anwendung und das Codebeispiel manuell konfigurieren möchten, verwenden Sie die folgenden Verfahren.

Schritt 1: Anwendung registrieren

  1. Melden Sie sich beim Microsoft Entra Admin Center mindestens als Cloudanwendungsadministrator an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Symbol für Einstellungen im oberen Menü, um zum Mandanten zu wechseln, in dem Sie die Anwendung über das Menü Verzeichnisse + Abonnements registrieren möchten.
  3. Wechseln Sie zu Identität>Anwendungen>App-Registrierungen, und wählen Sie Neue Registrierung aus.
  4. Geben Sie unter Name einen Namen für Ihre Anwendung ein. Geben Sie beispielsweise ASPNET-Quickstart ein. Benutzern Ihrer App wird dieser Name angezeigt. Sie können ihn später ändern.
  5. Legen Sie den Typ unter Umleitungs-URI auf Web und den Wert auf https://localhost:44368/ fest.
  6. Wählen Sie Registrieren.
  7. Wählen Sie unter Verwalten die Option Authentifizierung aus.
  8. Wählen Sie im Abschnitt Implizite Genehmigung und Hybridflows die Option ID-Token aus.
  9. Wählen Sie Speichern aus.

Schritt 2: Herunterladen des Projekts

Herunterladen des ASP.NET-Codebeispiels

Tipp

Es wird empfohlen, das Archiv in ein Verzeichnis in der Nähe des Stammverzeichnisses Ihres Laufwerks zu extrahieren, um Fehler zu vermeiden, die durch Beschränkungen der Pfadlänge unter Windows verursacht werden.

Schritt 3: Ausführen des Projekts

  1. Extrahieren Sie die ZIP-Datei in einem lokalen Ordner in der Nähe des Stammverzeichnisses. Extrahieren Sie es beispielsweise in C:\Azure-Samples.

    Es wird empfohlen, das Archiv in ein Verzeichnis in der Nähe des Stammverzeichnisses Ihres Laufwerks zu extrahieren, um Fehler zu vermeiden, die durch Beschränkungen der Pfadlänge unter Windows verursacht werden.

  2. Öffnen Sie die Projektmappe 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 klicken und NuGet-Pakete wiederherstellen auswählen.

  4. Öffnen Sie die Paket-Manager-Konsole, indem Sie Ansicht>Weitere Fenster>Paket-Manager-Konsole auswählen. Führen Sie dann Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r aus.

  5. Bearbeiten Sie appsettings.json, und ersetzen Sie die Parameter ClientId, Tenant und redirectUri mit Folgendem:

    "ClientId" :"Enter_the_Application_Id_here" />
    "TenantId": "Enter_the_Tenant_Info_Here" />
    "RedirectUri" :"https://localhost:44368/" />
    

    Informationen zu diesem Code:

    • Enter_the_Application_Id_here ist die Anwendungs-ID (Client) der App-Registrierung, die Sie zuvor erstellt haben. Suchen Sie im Microsoft Entra Admin Center unter App-Registrierungen die Anwendungs-ID (Client-ID) auf der Seite Übersicht der App.
    • Enter_the_Tenant_Info_Here ist eine der folgenden Optionen:
      • Unterstützt Ihre Anwendung Nur meine Organisation, ersetzen Sie diesen Wert durch die Verzeichnis-ID (Mandant) oder den Mandantennamen (etwa contoso.onmicrosoft.com). Suchen Sie im Microsoft Entra Admin Center unter App-Registrierungen die Verzeichnis-ID (Mandanten-ID) auf der Seite Übersicht der App.
      • Falls Ihre Anwendung Konten in einem beliebigen Organisationsverzeichnis unterstützt, ersetzen Sie diesen Wert durch organizations.
      • Wenn Ihre Anwendung Alle Microsoft-Kontobenutzer unterstützt, ersetzen Sie diesen Wert durch common.
    • redirectUri ist der Umleitungs-URI, den Sie zuvor im Microsoft Entra Admin Center unter App-Registrierungen eingegeben haben.

Weitere Informationen

In diesem Abschnitt erhalten Sie eine Übersicht über den erforderlichen Code für die Benutzeranmeldung. Diese Übersicht kann hilfreich sein, um die Funktionsweise des Codes und die Hauptargumente zu verstehen und zu ermitteln, wie Sie einer vorhandenen ASP.NET-Anwendung eine Anmeldung hinzufügen.

Funktionsweise des Beispiels

Diagramm der Interaktion zwischen Webbrowser, Web-App und Microsoft Identity Platform in der Beispiel-App

NuGet-Pakete der OWIN-Middleware

Sie können die Authentifizierungspipeline mit cookiebasierter Authentifizierung über OpenID Connect in ASP.NET mit OWIN-Middlewarepaketen einrichten. Sie können diese Pakete installieren, indem Sie die folgenden Befehle in der Paket-Manager-Konsole in Visual Studio ausführen:

Install-Package Microsoft.Identity.Web.Owin
Install-Package Microsoft.Identity.Web.GraphServiceClient
Install-Package Microsoft.Owin.Security.Cookies

OWIN-Startklasse

Die OWIN-Middleware verwendet eine Startklasse, die beim Start des Hostingprozesses ausgeführt wird. In dieser Schnellstartanleitung befindet sich die Datei startup.cs im Stammordner. Der folgende Code zeigt die Parameter, die in dieser Schnellstartanleitung verwendet werden:

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

        app.UseCookieAuthentication(new CookieAuthenticationOptions());
        OwinTokenAcquirerFactory factory = TokenAcquirerFactory.GetDefaultInstance<OwinTokenAcquirerFactory>();

        app.AddMicrosoftIdentityWebApp(factory);
        factory.Services
            .Configure<ConfidentialClientApplicationOptions>(options => { options.RedirectUri = "https://localhost:44368/"; })
            .AddMicrosoftGraph()
            .AddInMemoryTokenCaches();
        factory.Build();
    }
Hierbei gilt: BESCHREIBUNG
ClientId Die Anwendungs-ID der im Azure-Portal registrierten Anwendung
Authority STS-Endpunkt (Security Token Service, Sicherheitstokendienst) für den zu authentifizierenden Benutzer. Dies ist in der Regel https://login.microsoftonline.com/{tenant}/v2.0 für die öffentliche Cloud. In dieser URL ist {tenant} der Name Ihres Mandanten, Ihre Mandanten-ID oder common für einen Verweis auf den allgemeinen Endpunkt. (Der allgemeine Endpunkt wird für mehrinstanzenfähige Anwendungen verwendet.)
RedirectUri Die URL, an die Benutzer nach der Authentifizierung über Microsoft Identity Platform umgeleitet werden
PostLogoutRedirectUri Die URL, an die Benutzer nach der Abmeldung umgeleitet werden.
Scope Die Liste der angeforderten Bereiche, getrennt durch Leerzeichen
ResponseType Die Anforderung, dass die Antwort von der Authentifizierung einen Autorisierungscode und ein ID-Token enthält
TokenValidationParameters Eine Liste von Parametern für die Tokenüberprüfung. In diesem Fall wird ValidateIssuer auf false festgelegt, um anzugeben, dass Anmeldungen von beliebigen persönlichen Kontotypen oder Geschäfts-, Schul- oder Unikontotypen akzeptiert werden können.
Notifications Eine Liste von Delegaten, die für OpenIdConnect-Nachrichten ausgeführt werden können

Authentifizierungsaufforderung

Sie können den Benutzer zur Anmeldung zwingen, indem Sie eine Authentifizierungsaufforderung in Ihrem Controller anfordern:

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

Tipp

Das Anfordern einer Authentifizierungsaufforderung mithilfe dieser Methode ist optional. Dies wird in der Regel verwendet, wenn Sie möchten, dass auf eine Ansicht sowohl durch authentifizierte als auch durch nicht authentifizierte Benutzer zugegriffen werden kann. Alternativ können Sie Controller mit der im nächsten Abschnitt beschriebenen Methode schützen.

Attribut zum Schützen eines Controllers oder von Controlleraktionen

Sie können einen Controller oder Controlleraktionen mithilfe des [Authorize]-Attributs schützen. Dieses Attribut beschränkt den Zugriff auf den Controller oder die Aktionen, indem nur authentifizierte Benutzer auf die Aktionen im Controller zugreifen können. Eine Authentifizierungsaufforderung erfolgt dann automatisch, wenn ein nicht authentifizierter Benutzer auf eine Aktion oder einen Controller zugreifen möchte, die bzw. der mit dem Attribut [Authorize] versehen ist.

Aufrufen von Microsoft Graph über den Controller

Sie können Microsoft Graph über den Controller aufrufen, indem Sie die Instanz von GraphServiceClient mithilfe der GetGraphServiceClient-Erweiterungsmethode auf dem Controller abrufen, wie im folgenden Code:

    try
    { 
        var me = await this.GetGraphServiceClient().Me.GetAsync();
        ViewBag.Username = me.DisplayName;
    }
    catch (ServiceException graphEx) when (graphEx.InnerException is MicrosoftIdentityWebChallengeUserException)
    {
        HttpContext.GetOwinContext().Authentication.Challenge(OpenIdConnectAuthenticationDefaults.AuthenticationType);
        return View();
    }

Hilfe und 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.

Nächste Schritte

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.