Lab 06: Authentifizieren mit OpenID Connect, MSAL und .NET SDKs

Microsoft Azure-Benutzeroberfläche

Aufgrund der dynamischen Natur der Microsoft-Cloudtools kann es vorkommen, dass sich die Azure-Benutzeroberfläche nach der Entwicklung dieses Trainingsinhalts ändert. Daher sind die Lab-Anweisungen und Lab-Schritte möglicherweise nicht mehr zutreffend.

Microsoft aktualisiert diesen Trainingskurs, wenn die Community uns über die erforderlichen Änderungen informiert. Cloudupdates kommen jedoch häufig vor, sodass möglicherweise Änderungen an der Benutzeroberfläche auftreten, bevor diese Trainingsinhalte aktualisiert werden. Wenn dies der Fall ist, stellen Sie sich auf die Veränderungen ein, und arbeiten Sie sie bei Bedarf in den Labs durch.

Anweisungen

Vorbereitung

Anmelden bei der Laborumgebung

Melden Sie sich mithilfe der folgenden Anmeldeinformationen bei Ihrer Windows 11-VM an:

  • Benutzername: Admin
  • Kennwort: Pa55w.rd

Hinweis: Ihr Kursleiter stellt Anweisungen zum Herstellen einer Verbindung mit der virtuellen Laborumgebung zur Verfügung.

Überprüfen der installierten Anwendungen

Suchen Sie auf Ihrem Windows 11-Desktop nach der Taskleiste. Die Taskleiste enthält die Symbole für die Anwendungen, die Sie in diesem Lab verwenden, darunter:

  • Microsoft Edge
  • Visual Studio Code

Übungsszenario

In diesem Lab registrieren Sie eine Anwendung in Microsoft Entra ID, fügen einen Benutzerin hinzu und testen dann den Zugriff des Benutzers bzw. der Benutzerin auf die Anwendung, um zu überprüfen, ob Entra ID den Zugriff schützen kann.

Architekturdiagramm

Architekturdiagramm, das die Authentifizierung eines Benutzers mithilfe von OpenID Connect, MSAL und .NET SDKs zeigt.

Übung 1: Konfigurieren einer Entra ID-Umgebung mit einem Mandanten

Aufgabe 1: Öffnen des Azure-Portals

  1. Wählen Sie auf der Taskleiste das Symbol Microsoft Edge aus.

  2. Navigieren Sie im geöffneten Browserfenster zum Azure-Portal unter https://portal.azure.com, und melden Sie sich dann mit dem Konto an, das Sie für dieses Lab verwenden werden.

    Hinweis: Wenn Sie sich zum ersten Mal am Azure-Portal anmelden, wird Ihnen eine Tour durch das Portal angeboten. Wählen Sie Erste Schritte aus, um die Tour zu überspringen und mit der Verwendung des Portals zu beginnen.

Aufgabe 2: Registrieren einer Anwendung im Entra ID-Verzeichnis

  1. Verwenden Sie im Azure-Portal das Textfeld Ressourcen, Dienste und Dokumente durchsuchen, um nach Microsoft Entra ID zu suchen, und wählen Sie in der Ergebnisliste Microsoft Entra ID aus.

    Hinweis: Dies leitet Ihre Browsersitzung zum Blatt des Microsoft Entra ID-Mandanten um, das Ihrem Azure-Abonnement zugeordnet ist.

  2. Wählen Sie auf dem Blatt  Microsoft Entra ID  im Abschnitt Verwalten die Option App-Registrierungen aus.

  3. Wählen Sie im Abschnitt App-Registrierungen die Option + Neue Registrierung aus.

  4. Führen Sie im Abschnitt Registrieren einer Anwendung die folgenden Aktionen aus, und wählen Sie dann Registrieren aus:

    Einstellung Aktion
    Textfeld Name Geben Sie webappoidc ein.
    Liste Unterstützte Kontotypen Wählen Sie Nur Konten in diesem Organisationsverzeichnis (nur Standardverzeichnis – einzelner Mandant) aus.

    Hinweis: Der Name des Mandanten kann je nach Ihrem Azure-Abonnement anders lauten.

    Der folgende Screenshot zeigt die konfigurierten Einstellungen im Abschnitt Registrieren einer Anwendung.

    Screenshot: Zum Registrieren einer Anwendung konfigurierte Optionen

Aufgabe 3: Aufzeichnen eindeutiger Bezeichner

  1. Wählen Sie auf dem webappoidc-Anwendungsregistrierungsblatt die Option Übersicht aus.

  2. Suchen Sie im Abschnitt Übersicht den Wert des Textfelds Anwendungs-ID (Client) und notieren Sie ihn. Sie verwenden diesen Wert später im Lab.

  3. Suchen Sie im Abschnitt Übersicht den Wert des Textfelds Verzeichnis-ID (Mandant) und notieren Sie ihn. Sie verwenden diesen Wert später im Lab.

Aufgabe 4: Konfigurieren der Einstellungen für die Anwendungsauthentifizierung

  1. Wählen Sie auf dem webappoidc-Anwendungsregistrierungsblatt die Option Authentifizierung im Abschnitt Verwaltung aus.

  2. Führen Sie im Abschnitt Authentifizierung die folgenden Aktionen aus, und wählen Sie Konfigurieren aus:

    Einstellung Aktion
    Abschnitt Plattformkonfigurationen Wählen Sie + Plattform hinzufügen aus.
    Blatt Plattformen konfigurieren Wählen Sie Web aus.
    Textfeld Umleitungs-URIs Geben Sie https://localhost:5001/ ein.
    Textfeld URL für Front-Channel-Abmeldung Geben Sie https://localhost:5001/signout-oidc ein.
  3. Zurück im Abschnitt Plattformkonfigurationen, wählen Sie URI hinzufügen aus, und geben Sie dann https://localhost:5001/signin-oidc ein.

  4. Wählen Sie im Abschnitt Implizite Genehmigung und Hybridflows die Option ID-Token (werden für implizite und Hybridflows verwendet) aus.

  5. Wählen Sie Speichern aus.

    Der folgende Screenshot veranschaulicht die konfigurierten Einstellungen auf dem Blatt Authentifizierung.

    Screenshot: Auf dem Blatt „Authentifizierung“ konfigurierte Optionen

Aufgabe 5: Erstellen von Microsoft Entra ID-Benutzer*innen

  1. Wählen Sie im Azure-Portal das Symbol Cloud Shell (Cloud Shell-Symbol) aus, um Cloud Shell zu öffnen. Wenn Cloud Shell standardmäßig eine Bash-Sitzung verwendet, wählen Sie die Option Zu PowerShell wechseln im Cloud Shell-Menü und dann Bestätigen.

    Hinweis: Das Cloud Shell-Symbol wird durch ein Größer-als-Zeichen (>) und einen Unterstrich (_) dargestellt.

    Wenn Sie Cloud Shell zum ersten Mal starten, erhalten Sie eine Reihe von Eingabeaufforderungen zum Erstellen der Ressource. Führen Sie die in der folgenden Tabelle dargestellten Aktionen aus:

    Prompt Aktion
    Willkommen bei Azure Cloud Shell Wählen Sie PowerShell aus.
    Erste Schritte Wählen Sie Speicherkonto bereitstellen, dann Ihr Speicherkontoabonnement aus der Dropdownliste und schließlich Übernehmen aus.
    Speicherkonto bereitstellen Wählen Sie Wir erstellen ein Speicherkonto für Sie und anschließend Weiter aus.
  2. Führen Sie im Fenster Cloud Shell den folgenden Befehl aus, um sich bei dem mit Ihrem Azure-Abonnement verbundenen Microsoft Entra-Mandanten anzumelden:

     Connect-AzureAD
    
  3. Führen Sie den folgenden Befehl aus, um den primären DNS-Domänennamen (Domain Name System) des Microsoft Entra-Mandanten abzurufen und anzuzeigen:

     $aadDomainName = ((Get-AzureAdTenantDetail).VerifiedDomains)[0].Name
     $aadDomainName
    

    Hinweis: Notieren Sie sich den Wert des DNS-Domänennamens. Sie verwenden diesen Wert später im Lab.

  4. Führen Sie die folgenden Befehle aus, um Microsoft Entra ID-Benutzer*innen zu erstellen, die Sie zum Testen der Microsoft Entra ID-Authentifizierung verwenden:

     $passwordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
     $passwordProfile.Password = 'Pa55w.rd1234'
     $passwordProfile.ForceChangePasswordNextLogin = $false
     New-AzureADUser -AccountEnabled $true -DisplayName 'aad_lab_user1' -PasswordProfile $passwordProfile -MailNickName 'aad_lab_user1' -UserPrincipalName "aad_lab_user1@$aadDomainName" 
    
  5. Führen Sie den folgenden Befehl aus, um den Benutzerprinzipalnamen (UPN) der neu erstellten Microsoft Entra-Benutzer*innen zu ermitteln:

     (Get-AzureADUser -Filter "MailNickName eq 'aad_lab_user1'").UserPrincipalName
    

    Hinweis: Notieren Sie sich den UPN. Sie verwenden diesen Wert später im Lab.

  6. Schließen Sie den Cloud Shell-Bereich.

Überprüfung

In dieser Übung haben Sie eine Azure AD-Anwendung mit einzelnem Mandanten registriert und ein Azure AD-Benutzerkonto erstellt.

Übung 2: Erstellen einer ASP.NET-Web-App mit einem einzigen Mandanten

Aufgabe 1: Erstellen eines ASP.NET-Web-App-Projekts

  1. Starten Sie auf dem Lab-Computer die Eingabeaufforderung.

  2. Führen Sie an der Eingabeaufforderung die folgenden Befehle aus, um das aktuelle Verzeichnis zu erstellen und auf Allfiles (F):\Allfiles\Labs\06\Starter\OIDCClient festzulegen:

     F:
     cd F:\Allfiles\Labs\06\Starter\OIDCClient
    
  3. Führen Sie die folgenden Befehle aus, um eine neue .NET Core-Web-App auf der Grundlage der MVC-Vorlage (Model View Controller) zu erstellen (ersetzen Sie die Platzhalter <application_ID>, <tenant_ID> und <domain_Name> durch die entsprechenden Werte, die Sie zuvor in diesem Lab aufgezeichnet haben):

     dotnet new mvc --auth SingleOrg --client-id <application_ID> --tenant-id <tenant_ID> --domain <domain_Name>
     rmdir .\obj /S /Q
    

    Hinweis: Wenn Sie einen Fehler im Terminal erhalten haben, ist es möglich, dass Sie PowerShell verwenden. In diesem Fall entfernen Sie die /S /Q-Flags, und führen Sie den Befehl erneut aus.

  4. Führen Sie den folgenden Befehl aus, um Visual Studio Code zu starten.

     code .
    

    Wenn Sie gefragt werden: Vertrauen Sie den Autoren aller Dateien in diesem Ordner? , wählen Sie Ja, ich vertraue den Autoren.

  5. Überprüfen Sie im Visual Studio Code-Explorer-Bereich die automatisch generierte Ordnerstruktur, die eine MVC-Web-App darstellt.

  6. Navigieren Sie zum Ordner Eigenschaften, öffnen Sie die Datei launchSettings.json, und übernehmen Sie die folgenden Änderungen:

    Section Eigenschaft Wert
    iisSettings sslPort 44321
    https applicationUrl https://localhost:5001

    Hinweis: Die Portnummern müssen mit dem Wert übereinstimmen, den Sie bei der Erstellung der Microsoft Entra-App-Registrierung angegeben haben.

  7. Speichern und schließen Sie die Datei.

  8. Wählen Sie im Visual Studio Code-Explorer-Bereich die Datei OIDCClient.csproj aus.

  9. Stellen Sie sicher, dass der Wert des <TargetFramework>-Elements auf net8.0 festgelegt ist.

  10. Stellen Sie sicher, dass die Version der NuGet-Pakete Microsoft.AspNetCore.Authentication.JwtBearer und Microsoft.AspNetCore.Authentication.OpenIdConnect auf 8.0.0 festgelegt ist.

  11. Überprüfen Sie, ob der Inhalt der Datei OIDCClient.csproj der folgenden Auflistung entspricht (der Wert von UserSecretsId wird sich unterscheiden), und speichern Sie dann die Änderungen.

     <Project Sdk="Microsoft.NET.Sdk.Web">
    
       <PropertyGroup>
         <TargetFramework>net8.0</TargetFramework>
         <Nullable>enable</Nullable>
         <ImplicitUsings>enable</ImplicitUsings>
         <UserSecretsId>aspnet-OIDCClient-5249f5b2-6266-4a13-b8b4-e79c6443aabc</UserSecretsId>
       </PropertyGroup>
    
       <ItemGroup>
         <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.0-rc.2.23480.2" NoWarn="NU1605" />
         <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="8.0.0-rc.2.23480.2" NoWarn="NU1605" />
         <PackageReference Include="Microsoft.Identity.Web" Version="2.13.0" />
         <PackageReference Include="Microsoft.Identity.Web.UI" Version="2.13.0" />
         <PackageReference Include="Microsoft.Identity.Web.DownstreamApi" Version="2.13.0" />
       </ItemGroup>
    
     </Project>
    
  12. Schließen Sie die Datei OIDCClient.csproj.

  13. Navigieren Sie zum Ordner Views\Shared, und öffnen Sie dann die Datei _LoginPartial.cshtml.

  14. Vergewissern Sie sich, dass das asp-area-Attribut in jedem span-Element auf MicrosoftIdentity verweist, wie in der folgenden Zeile zu sehen:

     <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
    
  15. Schließen Sie die Datei, ohne Änderungen vorzunehmen.

  16. Öffnen Sie die Datei appsettings.json im Stammordner, und überprüfen Sie den Inhalt des AzureAd-Objekts, einschließlich der folgenden Elemente:

    Element Wert
    Instance https://login.microsoftonline.com/
    Domain Primäre DNS-Domäne des Azure AD-Mandanten, der Ihrem Azure-Abonnement zugeordnet ist
    TenantId GUID des Azure AD-Mandanten
    ClientId Anwendungs-ID (Client) der Anwendung, die Sie im Azure AD-Mandanten registriert haben
    CallbackPath /signin-oidc
  17. Schließen Sie die Datei, ohne Änderungen vorzunehmen.

  18. Wählen Sie im Explorer-Bereich von Visual Studio Code die Datei Program.cs aus.

  19. Stellen Sie sicher, dass die Datei die folgenden using-Anweisungen enthält:

     using Microsoft.AspNetCore.Authentication.OpenIdConnect;
     using Microsoft.Identity.Web;
     using Microsoft.Identity.Web.UI;
    
  20. Stellen Sie sicher, dass die Datei die folgenden Zeilen enthält, die dem Container die relevanten Authentifizierungsdienste hinzufügen:

     // Add services to the container.
     builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
       .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"));
    
  21. Stellen Sie sicher, dass die Datei die folgenden Zeilen enthält, die einen Controller und Razor-Seiten für die Kontenverwaltung hinzufügen:

     builder.Services.AddRazorPages()
       .AddMicrosoftIdentityUI();
    
  22. Speichern und schließen Sie die Datei.

Aufgabe 2: Testen der Web-App mit einzelnem Mandanten in einem Einzelmandantenszenario

  1. Navigieren Sie im Visual Studio Code-Fenster in der oberen Menüleiste zum Menü Terminal, und wählen Sie Neues Terminal aus.

  2. Im Bereich Terminal sollte der aktuelle Pfad des aktuellen Arbeitsverzeichnisses F:\Allfiles\Labs\06\Starter\OIDCClient sein. Führen Sie die folgenden Befehle aus, um die .NET-Web-App zu erstellen:

     dotnet build
    

    Hinweis: Wenn Buildfehler auftreten, überprüfen Sie die Dateien im Ordner Allfiles (F):\Allfiles\Labs\06\Solution\OIDCClient. Ignorieren Sie alle Warnmeldungen.

  3. Führen Sie den folgenden Befehl aus, um ein selbstsigniertes Zertifikat zu generieren und den lokalen Computer so zu konfigurieren, dass er diesem Zertifikat vertraut:

     dotnet dev-certs https --trust
    
  4. Wenn Sie aufgefordert werden, das automatisch generierte Zertifikat zu installieren, wählen Sie Ja aus.

  5. Führen Sie an der Terminaleingabeaufforderung den folgenden Befehl aus, um die .NET-Web-App auszuführen:

     dotnet run
    
  6. Starten Sie den Microsoft Edge-Browser im Modus InPrivate, und navigieren Sie dann zur URL https://localhost:5001.

  7. Wenn Sie die Meldung Ihre Verbindung ist nicht privat erhalten, wählen Sie Erweitert und dann den Link Weiter zu localhost (unsicher) aus.

  8. Wenn Sie im geöffneten Browserfenster dazu aufgefordert werden, authentifizieren Sie sich mit dem UPN des Microsoft Entra-Kontos aad_lab_user1, das Sie zuvor in diesem Lab erstellt haben, mit Pa55w.rd1234 als Kennwort.

    Hinweis: Wenn Sie im Fenster Helfen Sie uns, Ihr Konto zu schützen. zur Eingabe aufgefordert werden, wählen Sie Vorerst überspringen aus.

    Hinweis: Wenn die Meldung Administratorgenehmigung erforderlich angezeigt wird, müssen Sie stattdessen eine Microsoft Entra-ID mit erhöhten Berechtigungen verwenden, um den restlichen Teil dieser Aufgabe abzuschließen. Wählen Sie dazu den Link Haben Sie ein Administratorkonto? Melden Sie sich mit diesem Konto an aus, melden Sie sich mit einem Administratorkonto an, und fahren Sie mit dem nächsten Schritt fort.

  9. Das Browserfenster öffnet automatisch die Webseite Berechtigungen erforderlich.

  10. Überprüfen Sie die angeforderten Berechtigungen, darunter Ihr grundlegendes Profil anzeigen und Zugriff auf Daten beibehalten, für die Sie der App Zugriff erteilt haben.

  11. Wählen Sie Akzeptieren aus.

  12. Überprüfen Sie die vom Browser angezeigte Homepage der Zielwebsite, und vergewissern Sie sich, dass der UPN des Microsoft Entra-Kontos aad_user1 im Browserfenster angezeigt wird.

  13. Wählen Sie auf der Homepage die Option Abmelden aus.

  14. Wenn Sie aufgefordert werden, das Konto für die Abmeldung auszuwählen, wählen Sie das Microsoft Entra-Konto aad_lab_user1 aus. Sie werden automatisch zur Seite Abgemeldet weitergeleitet.

  15. Schließen Sie den Microsoft Edge-Browser.

Überprüfung

In dieser Übung haben Sie eine Web-App für einen einzelnen Mandanten implementiert und in einer Microsoft Entra-Umgebung mit einzelnem Mandanten getestet.