Ćwiczenie — implementowanie uwierzytelniania interakcyjnego przy użyciu MSAL.NET
W tym ćwiczeniu dowiesz się, jak wykonywać następujące akcje:
- Rejestrowanie aplikacji za pomocą platformy tożsamości firmy Microsoft
PublicClientApplicationBuilder
Używanie klasy w MSAL.NET- Uzyskiwanie tokenu interaktywnie w aplikacji konsolowej
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Jeśli jej jeszcze nie masz, możesz zarejestrować się w celu uzyskania bezpłatnej wersji próbnej na stronie https://azure.com/free
- Visual Studio Code: program Visual Studio Code można zainstalować z poziomu programu https://code.visualstudio.com.
- Wersja zestawu .NET SDK https://dotnet.microsoft.com/download/dotnet (6.0, 7.0 lub 8.0)
Rejestrowanie nowej aplikacji
Zaloguj się do portalu: https://portal.azure.com
Wyszukaj i wybierz Tożsamość Microsoft Entra.
W obszarze Zarządzanie wybierz pozycję Rejestracje aplikacji> Nowa rejestracja.
Gdy pojawi się strona Rejestrowanie aplikacji, wprowadź informacje rejestracyjne aplikacji:
Pole Wartość Nazwa/nazwisko az204appreg
Obsługiwane typy kont Wybierz pozycję Konta tylko w tym katalogu organizacyjnym Identyfikator URI przekierowania (opcjonalnie) Wybierz pozycję Klient publiczny/natywny (mobilny i klasyczny) i wprowadź http://localhost
w polu po prawej stronie.Wybierz pozycję Zarejestruj.
Identyfikator Entra firmy Microsoft przypisuje do aplikacji unikatowy identyfikator aplikacji (klienta) i zostanie przeniesiony na stronę Przegląd aplikacji.
Konfigurowanie aplikacji konsolowej
Uruchom program Visual Studio Code i otwórz terminal, wybierając pozycję Terminal , a następnie pozycję Nowy terminal.
Utwórz folder dla projektu i przejdź do folderu .
md az204-auth cd az204-auth
Utwórz aplikację konsolową platformy .NET.
dotnet new console
Otwórz folder az204-auth w programie Visual Studio Code.
code . -r
Tworzenie aplikacji konsolowej
W tej sekcji dodasz niezbędne pakiety i kod do projektu.
Dodawanie pakietów i używanie instrukcji
Microsoft.Identity.Client
Dodaj pakiet do projektu w terminalu w programie Visual Studio Code.dotnet add package Microsoft.Identity.Client
Otwórz plik Program.cs i dodaj
using
instrukcje, aby uwzględnićMicrosoft.Identity.Client
i włączyć operacje asynchroniczne.using System.Threading.Tasks; using Microsoft.Identity.Client;
Zmień metodę Main, aby włączyć asynchronikę.
public static async Task Main(string[] args)
Dodawanie kodu na potrzeby uwierzytelniania interakcyjnego
Do przechowywania identyfikatorów aplikacji (klienta) i katalogu (dzierżawy) potrzebne są dwie zmienne. Możesz skopiować te wartości z portalu. Dodaj następujący kod i zastąp wartości ciągu odpowiednimi wartościami z portalu.
private const string _clientId = "APPLICATION_CLIENT_ID"; private const string _tenantId = "DIRECTORY_TENANT_ID";
PublicClientApplicationBuilder
Użyj klasy , aby utworzyć kontekst autoryzacji.var app = PublicClientApplicationBuilder .Create(_clientId) .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId) .WithRedirectUri("http://localhost") .Build();
Kod opis .Create
Tworzy element PublicClientApplicationBuilder
na podstawie identyfikatora clientID..WithAuthority
Dodaje znany urząd odpowiadający serwerowi usług AD FS. W kodzie określamy chmurę publiczną i używamy dzierżawy dla zarejestrowanej aplikacji.
Uzyskiwanie tokenu
Po zarejestrowaniu aplikacji az204appreg automatycznie wygenerowano uprawnienie user.read
interfejsu API dla programu Microsoft Graph. To uprawnienie jest używane do uzyskiwania tokenu.
Ustaw zakres uprawnień dla żądania tokenu. Dodaj następujący kod poniżej .
PublicClientApplicationBuilder
string[] scopes = { "user.read" };
Dodaj kod, aby zażądać tokenu i zapisać wynik w konsoli.
AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync(); Console.WriteLine($"Token:\t{result.AccessToken}");
Przegląd ukończonej aplikacji
Zawartość pliku Program.cs powinna przypominać następujący przykład:
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}");
}
}
}
Uruchamianie aplikacji
W terminalu programu Visual Studio Code uruchom polecenie
dotnet build
, aby sprawdzić błędy, a następniedotnet run
uruchomić aplikację.Aplikacja otwiera domyślną przeglądarkę z monitem o wybranie konta, za pomocą którego chcesz się uwierzytelnić. Jeśli na liście znajduje się wiele kont, wybierz te skojarzone z dzierżawą używaną w aplikacji.
Jeśli po raz pierwszy uwierzytelniono się w zarejestrowanej aplikacji, otrzymasz powiadomienie z żądaniem uprawnień z prośbą o zatwierdzenie aplikacji w celu odczytania danych skojarzonych z kontem. Wybierz pozycję Zaakceptuj.
W konsoli powinny zostać wyświetlone wyniki podobne do poniższego przykładu.
Token: eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVhU.....