Szybki start: wywoływanie internetowego interfejsu API chronionego przez platformę tożsamości firmy Microsoft
Dotyczy: Najemcy usługi Workforce
Najemcy zewnętrzni (dowiedzieć się więcej)
W tym krótkim przewodniku użyjesz przykładowej aplikacji internetowej, aby pokazać, jak chronić internetowy interfejs API ASP.NET przy użyciu platformy tożsamości Microsoftu. W przykładzie użyto biblioteki Microsoft Authentication Library (MSAL) do obsługi uwierzytelniania.
Warunki wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz bezpłatne konto.
- Visual Studio 2022. Pobierz Visual Studio za darmo.
Rejestracja aplikacji webowego API
Aby ukończyć rejestrację, podaj nazwę aplikacji i określ obsługiwane typy kont. Po zarejestrowaniu, strona przeglądowa aplikacji wyświetla identyfikatory potrzebne w kodzie źródłowym aplikacji.
Zaloguj się do centrum administracyjnego Microsoft Entra jako co najmniej Deweloper Aplikacji.
Jeśli masz dostęp do wielu dzierżaw, użyj ikony ustawienia
w górnym menu, aby przełączyć się do dzierżawy, w której chcesz zarejestrować aplikację z menu Katalogi i subskrypcje.
Przejdź do Identity>Applications>App registrations.
Wybierz pozycję Nowa rejestracja.
Wprowadź Nazwa dla aplikacji, na przykład NewWebAPI1.
W przypadku obsługiwanych typów kont wybierz opcję "Konta tylko w tym katalogu organizacyjnym" . Aby uzyskać informacje o różnych typach kont, wybierz pozycję Pomóż mi wybrać opcję.
Wybierz pozycję Zarejestruj.
Po zakończeniu rejestracji zostanie wyświetlone okienko Przegląd aplikacji. Zanotuj identyfikator katalogu (dzierżawy) oraz identyfikator aplikacji (klienta) do użycia w kodzie źródłowym aplikacji.
Notatka
Typy kont obsługiwanych można zmienić, powołując się na Modyfikowanie kont obsługiwanych przez aplikację.
Uwidacznianie interfejsu API
Po zarejestrowaniu interfejsu API można skonfigurować jego uprawnienia, definiując zakresy, które interfejs API uwidacznia aplikacjom klienckim. Aplikacje klienckie żądają uprawnień do wykonywania operacji, przekazując token dostępu wraz z żądaniami do chronionego internetowego interfejsu API. Internetowy interfejs API wykonuje żądaną operację tylko wtedy, gdy otrzymany token dostępu zawiera wymagane zakresy.
W obszarze Zarządzajwybierz pozycję Uwidacznij interfejs API>Dodaj zakres. Zaakceptuj proponowany identyfikator URI aplikacji (
api://{clientId}
), wybierając pozycję Zapisz i kontynuuj, a następnie wprowadź następujące informacje:- Dla nazwa zakresu, wprowadź
access_as_user
. - W przypadku Kto może wyrazić zgodę, upewnij się, że wybrano opcję administratorzy i użytkownicy.
- W polu nazwa wyświetlana zgody administratora wprowadź
Access TodoListService as a user
. - W opis zgody administratora wprowadź
Accesses the TodoListService web API as a user
. - W polu Nazwa wyświetlana zgody użytkownika wprowadź
Access TodoListService as a user
. - W polu opis zgody użytkownika wprowadź
Accesses the TodoListService web API as a user
. - Dla stanu , pozostaw włączone.
- Dla nazwa zakresu, wprowadź
Wybierz pozycję Dodaj zakres.
Klonowanie lub pobieranie przykładowej aplikacji
Aby uzyskać przykładową aplikację, możesz ją sklonować z usługi GitHub lub pobrać jako plik .zip.
git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
Napiwek
Aby uniknąć błędów spowodowanych ograniczeniami długości ścieżki w systemie Windows, zalecamy wyodrębnienie archiwum lub sklonowanie repozytorium do katalogu w pobliżu katalogu głównego dysku.
Konfigurowanie przykładowej aplikacji
Skonfiguruj przykładowy kod, aby był zgodny z zarejestrowanym internetowym interfejsem API.
Otwórz rozwiązanie w programie Visual Studio, a następnie otwórz plik appsettings.json w katalogu głównym projektu TodoListService.
Zastąp wartość
Enter_the_Application_Id_here
wartością Identyfikatora klienta (Identyfikatora aplikacji) z aplikacji zarejestrowanej w portalu App registrations, zarówno we właściwościachClientID
, jak iAudience
.
Dodawanie nowego zakresu do pliku app.config
Aby dodać nowy zakres do pliku app.config TodoListClient, wykonaj następujące kroki:
W folderze głównym projektu TodoListClient otwórz plik app.config.
Wklej identyfikator aplikacji z aplikacji zarejestrowanej dla projektu TodoListService w parametrze
TodoListServiceScope
, zastępując ciąg{Enter the Application ID of your TodoListService from the app registration portal}
.
Notatka
Upewnij się, że identyfikator aplikacji używa następującego formatu: api://{TodoListService-Application-ID}/access_as_user
(gdzie {TodoListService-Application-ID}
jest identyfikatorem GUID reprezentującym identyfikator aplikacji dla aplikacji TodoListService).
Rejestrowanie aplikacji internetowej (TodoListClient)
Zarejestruj aplikację TodoListClient w rejestracje aplikacji w Azure Portal, a następnie w projekcie TodoListClient skonfiguruj kod. Jeśli klient i serwer są traktowane jako ta sama aplikacja, możesz ponownie użyć aplikacji zarejestrowanej w kroku 2. Użyj tej samej aplikacji, jeśli chcesz, aby użytkownicy logować się przy użyciu osobistego konta Microsoft.
Rejestrowanie aplikacji
Aby zarejestrować aplikację TodoListClient, wykonaj następujące kroki:
Zaloguj się do centrum administracyjnego Microsoft Entra mając uprawnienia co najmniej Administratora aplikacji w chmurze.
Przejdź do Identity>Applications>App registrations i wybierz New registration.
Wybierz pozycję Nowa rejestracja.
Po otwarciu strony Rejestrowanie aplikacji wprowadź informacje o rejestracji aplikacji:
- W sekcji Nazwa wprowadź znaczącą nazwę aplikacji, która będzie wyświetlana użytkownikom aplikacji (na przykład NativeClient-DotNet-TodoListClient).
- Dla obsługiwanych typów kont wybierz Konta w dowolnym katalogu organizacyjnym .
- Wybierz pozycję Zarejestruj, aby utworzyć aplikację.
Notatka
W pliku app.config projektu TodoListClient wartość domyślna
ida:Tenant
jest ustawiona nacommon
. Możliwe wartości to:-
common
: Możesz zalogować się przy użyciu konta służbowego lub osobistego konta Microsoft (ponieważ w poprzednim kroku wybrano opcję Konta w dowolnym katalogu organizacyjnym). -
organizations
: Możesz zalogować się przy użyciu konta służbowego lub szkolnego. -
consumers
: Możesz zalogować się tylko przy użyciu konta osobistego Microsoft.
Na stronie przeglądu aplikacji wybierz Authentication, a następnie wykonaj te kroki, aby dodać platformę:
- W obszarze Konfiguracje platformywybierz przycisk Dodaj platformę.
- W przypadku aplikacji mobilnych i komputerowychwybierz pozycję aplikacje mobilne i komputerowe.
- Dla identyfikatorów URI przekierowaniawybierz pole wyboru
https://login.microsoftonline.com/common/oauth2/nativeclient
. - Wybierz Konfiguruj.
Wybierz uprawnienia interfejsu API, a następnie wykonaj poniższe kroki, aby dodać uprawnienia:
- Wybierz przycisk Dodaj uprawnienie.
- Wybierz kartę Moje interfejsy API.
- Na liście interfejsów API wybierz pozycję AppModelv2-NativeClient-DotNet-TodoListService API lub nazwę wprowadzoną dla internetowego interfejsu API.
- Zaznacz pole wyboru uprawnienia access_as_user, jeśli nie jest jeszcze zaznaczone. W razie potrzeby użyj pola Wyszukiwania.
- Wybierz przycisk Dodaj uprawnienia.
Konfigurowanie projektu
Skonfiguruj projekt TodoListClient, dodając identyfikator aplikacji do pliku app.config.
W portalu App registrations na stronie Przegląd skopiuj wartość identyfikatora aplikacji (klienta) .
W folderze głównym projektu TodoListClient otwórz plik app.config, a następnie wklej wartość Identyfikator aplikacji w parametrze
ida:ClientId
.
Uruchamianie przykładowej aplikacji
Uruchom oba projekty. Dla użytkowników programu Visual Studio;
Kliknij prawym przyciskiem myszy na rozwiązaniu Visual Studio i wybierz Właściwości
W Common Properties wybierz pozycję Startup Project, a następnie wiele projektów startowych.
W przypadku obu projektów wybierz Uruchom jako akcję
Upewnij się, że usługa TodoListService jest uruchamiana jako pierwsza, przenosząc ją na pierwszą pozycję na liście przy użyciu strzałki w górę.
Zaloguj się, aby uruchomić projekt TodoListClient.
Naciśnij F5, aby uruchomić projekty. Zostanie otwarta strona usługi, a także aplikacja komputerowa.
W aplikacji TodoListClient w prawym górnym rogu wybierz pozycję Zaloguj się, a następnie zaloguj się przy użyciu tych samych poświadczeń, które użyto do zarejestrowania aplikacji, lub zaloguj się jako użytkownik w tym samym katalogu.
Jeśli logujesz się po raz pierwszy, może zostać wyświetlony monit o wyrażenie zgody na internetowy interfejs API todoListService.
Aby ułatwić uzyskanie dostępu do internetowego interfejsu API usługi TodoListService i manipulowanie listą zadań do wykonania, podczas logowania również żądany jest token dostępu do zakresu access_as_user.
Wstępna autoryzacja aplikacji klienckiej
Możesz zezwolić użytkownikom z innych katalogów na dostęp do internetowego interfejsu API przez wstępne autoryzowanie aplikacji klienckiej w celu uzyskania dostępu do internetowego interfejsu API. W tym celu należy dodać identyfikator aplikacji z aplikacji klienckiej do listy wstępnie autoryzowanych aplikacji dla internetowego interfejsu API. Dodając wstępnie autoryzowanego klienta, zezwalasz użytkownikom na dostęp do internetowego interfejsu API bez konieczności udzielania zgody.
- W portalu Rejestracje aplikacji otwórz właściwości aplikacji TodoListService.
- W sekcji Uwidaczniaj interfejs API w obszarze Autoryzowane aplikacje klienckiewybierz pozycję Dodaj aplikację kliencką.
- W polu identyfikator klienta wklej ID aplikacji TodoListClient.
- W sekcji Autoryzowane zakresy wybierz zakres dla internetowego interfejsu
api://<Application ID>/access_as_user
API. - Wybierz pozycję Dodaj aplikację.
Uruchamianie projektu
- Naciśnij F5, aby uruchomić projekt. Twoja aplikacja TodoListClient otwiera się.
- W prawym górnym rogu wybierz pozycję Zaloguj się, a następnie zaloguj się przy użyciu osobistego konta Microsoft, takiego jak konto live.com lub hotmail.com albo konto służbowe.
Opcjonalnie: Ogranicz dostęp do logowania do niektórych użytkowników
Domyślnie wszystkie konta osobiste, takie jak outlook.com lub live.com, oraz konta służbowe lub szkolne z organizacji zintegrowanych z identyfikatorem Microsoft Entra mogą żądać tokenów i uzyskiwać dostęp do internetowego interfejsu API.
Aby określić, kto może zalogować się do aplikacji, zmieniając właściwość TenantId
w pliku appsettings.json.
Następne kroki
Dowiedz się więcej, tworząc chroniony interfejs API sieci Web ASP.NET Core w następującej serii samouczków: