Oefening: interactieve verificatie implementeren met behulp van MSAL.NET
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 Azure-account met een actief abonnement. Als u nog geen abonnement hebt, kunt u zich registreren voor een gratis proefversie op https://azure.com/free
- Visual Studio Code: u kunt Visual Studio Code installeren vanuit https://code.visualstudio.com.
- Een versie van de .NET SDK https://dotnet.microsoft.com/download/dotnet (6.0, 7.0 of 8.0)
Een nieuwe toepassing registreren
Meld u aan bij de portal: https://portal.azure.com
Zoek Microsoft Entra ID en selecteer deze.
Selecteer onder Beheren de optie App-registraties>Nieuwe registratie.
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.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
Start Visual Studio Code en open een terminal door Terminal en vervolgens Nieuwe terminal te selecteren.
Maak een map voor het project en ga naar de map.
md az204-auth cd az204-auth
Maak de .NET-console-app.
dotnet new console
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
Voeg het
Microsoft.Identity.Client
pakket toe aan het project in een terminal in Visual Studio Code.dotnet add package Microsoft.Identity.Client
Open het bestand Program.cs en voeg instructies toe
using
om asynchrone bewerkingen op te nemenMicrosoft.Identity.Client
en in te schakelen.using System.Threading.Tasks; using Microsoft.Identity.Client;
Wijzig de main-methode om asynchroon in te schakelen.
public static async Task Main(string[] args)
Code toevoegen voor de interactieve verificatie
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";
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.
Stel het machtigingsbereik voor de tokenaanvraag in. Voeg de volgende code toe onder de
PublicClientApplicationBuilder
.string[] scopes = { "user.read" };
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
Voer in de Visual Studio Code-terminal
dotnet build
uit om te controleren op fouten en voer vervolgensdotnet run
de app uit.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.
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.
U ziet de resultaten die vergelijkbaar zijn met het onderstaande voorbeeld in de console.
Token: eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVhU.....