Ćwiczenie — implementowanie uwierzytelniania interakcyjnego przy użyciu MSAL.NET

Ukończone

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

Rejestrowanie nowej aplikacji

  1. Zaloguj się do portalu: https://portal.azure.com

  2. Wyszukaj i wybierz Tożsamość Microsoft Entra.

  3. W obszarze Zarządzanie wybierz pozycję Rejestracje aplikacji> Nowa rejestracja.

  4. 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.
  5. 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

  1. Uruchom program Visual Studio Code i otwórz terminal, wybierając pozycję Terminal , a następnie pozycję Nowy terminal.

  2. Utwórz folder dla projektu i przejdź do folderu .

    md az204-auth
    cd az204-auth
    
  3. Utwórz aplikację konsolową platformy .NET.

    dotnet new console
    
  4. 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

  1. Microsoft.Identity.Client Dodaj pakiet do projektu w terminalu w programie Visual Studio Code.

    dotnet add package Microsoft.Identity.Client
    
  2. 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;
    
  3. Zmień metodę Main, aby włączyć asynchronikę.

    public static async Task Main(string[] args)
    

Dodawanie kodu na potrzeby uwierzytelniania interakcyjnego

  1. 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";
    
  2. 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.

  1. Ustaw zakres uprawnień dla żądania tokenu. Dodaj następujący kod poniżej .PublicClientApplicationBuilder

    string[] scopes = { "user.read" };
    
  2. 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

  1. W terminalu programu Visual Studio Code uruchom polecenie dotnet build , aby sprawdzić błędy, a następnie dotnet run uruchomić aplikację.

  2. 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.

  3. 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.

    Select **Accept** to grant the permission.

  4. W konsoli powinny zostać wyświetlone wyniki podobne do poniższego przykładu.

    Token:  eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVhU.....