Udostępnij za pomocą


Testowanie chronionego internetowego interfejsu API platformy ASP.NET Core

Dotyczy: Zielone koło z białym symbolem zaznaczenia, które wskazuje, że następująca treść dotyczy najemców pracowników. Najemcy pracowników Zielone koło z białym symbolem zaznaczenia, które wskazuje, że następująca treść dotyczy najemców zewnętrznych. Najemcy zewnętrzni (dowiedz się więcej)

Ten poradnik jest finałową częścią serii, która pokazuje tworzenie i testowanie chronionego internetowego interfejsu API zarejestrowanego w środowisku Microsoft Entra. W części 1 tej serii utworzono internetowy interfejs API platformy ASP.NET Core i chroniono jego punkty końcowe. Teraz utworzysz lekką aplikację agentową, zarejestrujesz ją w dzierżawcy i użyjesz jej do przetestowania utworzonego przez ciebie interfejsu API.

W tym samouczku nauczysz się następujących rzeczy:

  • Zarejestruj aplikację demona
  • Przypisz rolę aplikacji do aplikacji demona
  • Zbuduj aplikację demona
  • Uruchom swoją aplikację demona, aby wywołać chroniony interfejs API internetu

Wymagania wstępne

Rejestrowanie aplikacji demona

W poniższych krokach pokazano, jak zarejestrować aplikację demona w centrum administracyjnym firmy Microsoft Entra:

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako deweloper aplikacji.

  2. Jeśli masz dostęp do wielu dzierżaw, użyj ikony Ustawienia w górnym menu, aby przełączyć się z menu Katalogi + subskrypcje do swojej dzierżawy zewnętrznej.

  3. Przejdź do obszaruRejestracje aplikacji>.

  4. Wybierz + Nowa rejestracja.

  5. Na wyświetlonej stronie Rejestrowanie aplikacji wprowadź informacje o rejestracji aplikacji:

    1. W sekcji Nazwa wprowadź zrozumiałą nazwę aplikacji, która będzie wyświetlana użytkownikom aplikacji, na przykład ciam-client-app.

    2. W obszarze Obsługiwane typy kont wybierz pozycję Konta tylko w tym katalogu organizacyjnym.

  6. Wybierz pozycję Zarejestruj.

  7. Po zakończeniu rejestracji zostanie wyświetlone okienko Przegląd aplikacji. Zapisz identyfikator katalogu (dzierżawy) i identyfikator aplikacji (klienta) do użycia w kodzie źródłowym aplikacji.

Utwórz klucz tajny klienta dla zarejestrowanej aplikacji. Aplikacja wykorzystuje tajny klucz klienta, aby potwierdzić swoją tożsamość, gdy żąda tokenów.

  1. Na stronie Rejestracje aplikacji wybierz utworzoną aplikację (na przykład tajny klucz klienta aplikacji internetowej), aby otworzyć stronę Omówienie.
  2. W obszarze Zarządzanie wybierz pozycję Certyfikaty i tajne>Tajny klienta>Nowy tajny klienta.
  3. W polu Opis wprowadź opis dla tajnego klucza klienta (na przykład tajny klucz klienta aplikacji webowej).
  4. W obszarze Wygasa wybierz czas trwania, przez jaki sekret jest ważny (zgodnie z zasadami bezpieczeństwa organizacji), a następnie wybierz Dodaj.
  5. Zapisz wartość sekretu. Ta wartość jest używana do konfiguracji w późniejszym kroku. Wartość sekretna nie zostanie ponownie wyświetlona i nie będzie w żaden sposób odzyskana po opuszczeniu sekcji Certyfikaty i sekrety. Upewnij się, że został on zarejestrowany.

Przypisz rolę aplikacji do aplikacji demona

Aplikacje, które uwierzytelniają się samodzielnie bez użytkownika, wymagają uprawnień aplikacji (nazywanych również rolami). Te uprawnienia umożliwiają aplikacji bezpośredni dostęp do zasobów. Z drugiej strony, jeśli testowaliśmy interfejs API przy użyciu zalogowanego użytkownika, przypiszemy delegowane uprawnienia (zakresy). Delegowane uprawnienia umożliwiają aplikacji działanie w imieniu użytkownika, ograniczone do praw dostępu użytkownika. Wykonaj następujące kroki, aby przypisać uprawnienia aplikacji do aplikacji demona:

  1. Na stronie Rejestracje aplikacji wybierz utworzoną aplikację, na przykład ciam-client-app.

  2. W obszarze Zarządzanie wybierz pozycję Uprawnienia interfejsu API.

  3. W obszarze Skonfigurowane uprawnienia wybierz pozycję Dodaj uprawnienie.

  4. Wybierz kartę Interfejsy API używane przez moją organizację .

  5. Na liście API wybierz taki jak ciam-ToDoList-api.

  6. Wybierz opcję Uprawnienia aplikacji . Wybieramy tę opcję, gdy aplikacja loguje się jako sama, ale nie w imieniu użytkownika.

  7. Z listy uprawnień wybierz pozycję TodoList.Read.All, ToDoList.ReadWrite.All (w razie potrzeby użyj pola wyszukiwania).

  8. Wybierz przycisk Dodaj uprawnienia .

  9. Na tym etapie poprawnie przydzieliłeś już uprawnienia. Jednak ponieważ aplikacja demona nie zezwala użytkownikom na interakcję z nią, sami użytkownicy nie mogą wyrazić zgody na te uprawnienia. Aby rozwiązać ten problem, administrator musi wyrazić zgodę na te uprawnienia w imieniu wszystkich użytkowników w dzierżawie:

    1. Wybierz pozycję <, a następnie wybierz pozycję >.
    2. Wybierz Odśwież, a następnie sprawdź, czy pod < dla obu uprawnień pojawia się Przyznane dla >nazwy twojej dzierżawy.

Zbuduj aplikację demona

  1. Zainicjuj aplikację konsolową platformy .NET i przejdź do folderu głównego:

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Zainstaluj MSAL.NET, aby ułatwić obsługę uwierzytelniania, uruchamiając następujące polecenie:

    dotnet add package Microsoft.Identity.Client
    
  3. Uruchom projekt interfejsu API i zanotuj port, na którym jest uruchomiony.

  4. Otwórz plik Program.cs i zastąp kod "Hello world" następującym kodem.

    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var response = await client.GetAsync("http://localhost:<your-api-port>/api/todolist);
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Przejdź do katalogu głównego aplikacji demona i uruchom aplikację przy użyciu polecenia dotnet run. Ten kod wysyła żądanie bez tokenu dostępu. Powinien zostać wyświetlony ciąg: Odpowiedź to: Nieautoryzowany wydrukowany w konsoli.

  5. Usuń kod w kroku 4 i zastąp element poniższym kodem, aby przetestować interfejs API, wysyłając żądanie z prawidłowym tokenem dostępu. Ta aplikacja demona używa przepływu poświadczeń klienta do uzyskania tokenu dostępu podczas uwierzytelniania bez interakcji użytkownika.

    using Microsoft.Identity.Client;
    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var clientId = "<your-daemon-app-client-id>";
    var clientSecret = "<your-daemon-app-secret>";
    var scopes = new[] {"api://<your-web-api-application-id>/.default"};
    var tenantId = "<your-tenant-id>";     //Use in workforce tenant configuration
    var tenantName = "<your-tenant-name>"; //Use in external tenant configuration
    var authority = $"https://login.microsoftonline.com/{tenantId}"; // Use "https://{tenantName}.ciamlogin.com" for external tenant configuration 
    
    var app = ConfidentialClientApplicationBuilder
        .Create(clientId)
        .WithAuthority(authority)
        .WithClientSecret(clientSecret)
        .Build();
    
    var result = await app.AcquireTokenForClient(new string[] { scopes }).ExecuteAsync();
    Console.WriteLine($"Access Token: {result.AccessToken}");
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
    var response = await client.GetAsync("http://localhost:/<your-api-port>/api/todolist");
    var content = await response.Content.ReadAsStringAsync();
    
    Console.WriteLine("Your response is: " + response.StatusCode);
    Console.WriteLine(content);
    
  6. Zastąp symbole zastępcze w kodzie identyfikatorem klienta aplikacji demona, tajnym kluczem, identyfikatorem aplikacji web API i nazwą dzierżawcy.

    • W przypadku zewnętrznych najemców, użyj autorytetu w formie: "https://{tenantName}.ciamlogin.com/"
    • W przypadku najemców siły roboczej użyj autorytetu w postaci: "https://login.microsoftonline.com/{tenantId}"
  7. Przejdź do katalogu głównego aplikacji demona i uruchom aplikację przy użyciu polecenia dotnet run. Ten kod wysyła żądanie z prawidłowym tokenem dostępu. Powinien zostać wyświetlony ciąg: Odpowiedź brzmi: OK wydrukowane w konsoli.