Oefening: interactieve verificatie implementeren met behulp van MSAL.NET

Voltooid

In deze oefening leert u hoe u de volgende acties uitvoert:

  • Een toepassing registreren bij het Microsoft-identiteitsplatform
  • PublicClientApplicationBuilder De klasse gebruiken in MSAL.NET
  • Een token interactief verkrijgen in een consoletoepassing

Vereisten

Een nieuwe toepassing registreren

  1. Meld u aan bij de portal: https://portal.azure.com

  2. Zoek Microsoft Entra ID en selecteer deze.

  3. Selecteer onder Beheren de optie App-registraties>Nieuwe registratie.

  4. Wanneer de pagina Een toepassing registreren wordt weergegeven, voert u de registratiegegevens van uw toepassing in:

    Veld Weergegeven als
    Naam az204appreg
    Ondersteunde accounttypen Alleen accounts selecteren in deze organisatiemap
    Omleidings-URI (optioneel) Selecteer Openbare client/systeemeigen (mobiel en desktop) en voer http://localhost in het vak aan de rechterkant in.
  5. Selecteer Registreren.

Microsoft Entra ID wijst een unieke toepassings-id (client) toe aan uw app en u wordt naar de overzichtspagina van uw toepassing geleid.

De consoletoepassing instellen

  1. Start Visual Studio Code en open een terminal door Terminal en vervolgens Nieuwe terminal te selecteren.

  2. Maak een map voor het project en ga naar de map.

    md az204-auth
    cd az204-auth
    
  3. Maak de .NET-console-app.

    dotnet new console
    
  4. Open de map az204-auth in Visual Studio Code.

    code . -r
    

De console-app bouwen

In deze sectie voegt u de benodigde pakketten en code toe aan het project.

Pakketten en instructies toevoegen

  1. Voeg het Microsoft.Identity.Client pakket toe aan het project in een terminal in Visual Studio Code.

    dotnet add package Microsoft.Identity.Client
    
  2. Open het bestand Program.cs en voeg instructies toe using om asynchrone bewerkingen op te nemen Microsoft.Identity.Client en in te schakelen.

    using System.Threading.Tasks;
    using Microsoft.Identity.Client;
    
  3. Wijzig de main-methode om asynchroon in te schakelen.

    public static async Task Main(string[] args)
    

Code toevoegen voor de interactieve verificatie

  1. U hebt twee variabelen nodig voor het opslaan van de toepassings-id's (client) en directory-id's (tenant). U kunt deze waarden vanuit de portal kopiëren. Voeg de volgende code toe en vervang de tekenreekswaarden door de juiste waarden uit de portal.

    private const string _clientId = "APPLICATION_CLIENT_ID";
    private const string _tenantId = "DIRECTORY_TENANT_ID";
    
  2. Gebruik de PublicClientApplicationBuilder klasse om de autorisatiecontext uit te bouwen.

    var app = PublicClientApplicationBuilder
        .Create(_clientId)
        .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
        .WithRedirectUri("http://localhost")
        .Build();
    
    Code Beschrijving
    .Create Hiermee maakt u een PublicClientApplicationBuilder op basis van een clientID.
    .WithAuthority Hiermee voegt u een bekende instantie toe die overeenkomt met een ADFS-server. In de code die we opgeven voor de openbare cloud en de tenant gebruiken voor de app die we hebben geregistreerd.

Een token verkrijgen

Wanneer u de az204appreg-app hebt geregistreerd, wordt automatisch een API-machtiging user.read gegenereerd voor Microsoft Graph. U gebruikt deze machtiging om een token te verkrijgen.

  1. Stel het machtigingsbereik voor de tokenaanvraag in. Voeg de volgende code toe onder de PublicClientApplicationBuilder.

    string[] scopes = { "user.read" };
    
  2. Voeg code toe om het token aan te vragen en het resultaat naar de console te schrijven.

    AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync();
    
    Console.WriteLine($"Token:\t{result.AccessToken}");
    

Voltooide toepassing controleren

De inhoud van het bestand Program.cs moet er ongeveer uitzien als in het volgende voorbeeld:

using System;
using System.Threading.Tasks;
using Microsoft.Identity.Client;

namespace az204_auth
{
    class Program
    {
        private const string _clientId = "APPLICATION_CLIENT_ID";
        private const string _tenantId = "DIRECTORY_TENANT_ID";

        public static async Task Main(string[] args)
        {
            var app = PublicClientApplicationBuilder
                .Create(_clientId)
                .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
                .WithRedirectUri("http://localhost")
                .Build(); 
            string[] scopes = { "user.read" };
            AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync();

            Console.WriteLine($"Token:\t{result.AccessToken}");
        }
    }
}

De toepassing uitvoeren

  1. Voer in de Visual Studio Code-terminal dotnet build uit om te controleren op fouten en voer vervolgens dotnet run de app uit.

  2. De app opent de standaardbrowser waarin u wordt gevraagd het account te selecteren waarmee u zich wilt verifiëren. Als er meerdere accounts worden weergegeven, selecteert u het account dat is gekoppeld aan de tenant die in de app wordt gebruikt.

  3. Als dit de eerste keer is dat u bent geverifieerd bij de geregistreerde app, ontvangt u een melding waarvoor machtigingen zijn aangevraagd, waarin u wordt gevraagd de app goed te keuren voor het lezen van gegevens die zijn gekoppeld aan uw account. Selecteer Accepteren.

    Select **Accept** to grant the permission.

  4. U ziet de resultaten die vergelijkbaar zijn met het onderstaande voorbeeld in de console.

    Token:  eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVhU.....