Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
Najemcy pracowników
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
- Jeśli jeszcze tego nie zrobiono, ukończ samouczek: tworzenie i ochrona internetowego interfejsu API ASP.NET Core za pomocą platformy tożsamości firmy Microsoft
Rejestrowanie aplikacji demona
W poniższych krokach pokazano, jak zarejestrować aplikację demona w centrum administracyjnym firmy Microsoft Entra:
Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako deweloper aplikacji.
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.Przejdź do obszaruRejestracje aplikacji>.
Wybierz + Nowa rejestracja.
Na wyświetlonej stronie Rejestrowanie aplikacji wprowadź informacje o rejestracji aplikacji:
W sekcji Nazwa wprowadź zrozumiałą nazwę aplikacji, która będzie wyświetlana użytkownikom aplikacji, na przykład ciam-client-app.
W obszarze Obsługiwane typy kont wybierz pozycję Konta tylko w tym katalogu organizacyjnym.
Wybierz pozycję Zarejestruj.
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.
- Na stronie Rejestracje aplikacji wybierz utworzoną aplikację (na przykład tajny klucz klienta aplikacji internetowej), aby otworzyć stronę Omówienie.
- W obszarze Zarządzanie wybierz pozycję Certyfikaty i tajne>Tajny klienta>Nowy tajny klienta.
- W polu Opis wprowadź opis dla tajnego klucza klienta (na przykład tajny klucz klienta aplikacji webowej).
- W obszarze Wygasa wybierz czas trwania, przez jaki sekret jest ważny (zgodnie z zasadami bezpieczeństwa organizacji), a następnie wybierz Dodaj.
- 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:
Na stronie Rejestracje aplikacji wybierz utworzoną aplikację, na przykład ciam-client-app.
W obszarze Zarządzanie wybierz pozycję Uprawnienia interfejsu API.
W obszarze Skonfigurowane uprawnienia wybierz pozycję Dodaj uprawnienie.
Wybierz kartę Interfejsy API używane przez moją organizację .
Na liście API wybierz taki jak ciam-ToDoList-api.
Wybierz opcję Uprawnienia aplikacji . Wybieramy tę opcję, gdy aplikacja loguje się jako sama, ale nie w imieniu użytkownika.
Z listy uprawnień wybierz pozycję TodoList.Read.All, ToDoList.ReadWrite.All (w razie potrzeby użyj pola wyszukiwania).
Wybierz przycisk Dodaj uprawnienia .
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:
- Wybierz pozycję <, a następnie wybierz pozycję >.
- Wybierz Odśwież, a następnie sprawdź, czy pod < dla obu uprawnień pojawia się Przyznane dla >nazwy twojej dzierżawy.
Zbuduj aplikację demona
Zainicjuj aplikację konsolową platformy .NET i przejdź do folderu głównego:
dotnet new console -o MyTestApp cd MyTestAppZainstaluj MSAL.NET, aby ułatwić obsługę uwierzytelniania, uruchamiając następujące polecenie:
dotnet add package Microsoft.Identity.ClientUruchom projekt interfejsu API i zanotuj port, na którym jest uruchomiony.
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.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);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}"
- W przypadku zewnętrznych najemców, użyj autorytetu w formie:
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.