Szybki start: ochrona internetowego interfejsu API platformy ASP.NET Core przy użyciu Platforma tożsamości Microsoft
W tym przewodniku Szybki start użyto przykładowego kodu internetowego interfejsu API platformy ASP.NET Core, aby pokazać, jak ograniczyć dostęp do zasobów do autoryzowanych kont. W przykładzie użyto ASP.NET Core Identity , która współdziała z biblioteką Microsoft Authentication Library (MSAL) w celu obsługi uwierzytelniania.
Warunki wstępne
- Konto platformy Azure z aktywną subskrypcją. Jeśli jeszcze go nie masz, utwórz bezpłatne konto.
- Minimalne wymaganie zestawu .NET 8.0 SDK
- Visual Studio 2022 lub Visual Studio Code
Rejestrowanie aplikacji i identyfikatorów rekordów
Napiwek
Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.
Aby ukończyć rejestrację, podaj nazwę aplikacji i określ obsługiwane typy kont. Po zarejestrowaniu strona Przegląd aplikacji wyświetla identyfikatory wymagane w kodzie źródłowym aplikacji.
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ę do dzierżawy, w której chcesz zarejestrować aplikację z menu Katalogi i subskrypcje.
Przejdź do aplikacji tożsamości>> Rejestracje aplikacji.
Wybierz pozycję Nowa rejestracja.
Wprowadź nazwę aplikacji, na przykład NewWebAPI1.
W obszarze Obsługiwane typy kont wybierz pozycję Konta tylko w tym katalogu organizacyjnym. Aby uzyskać informacje na temat różnych typów kont, wybierz pozycję Pomóż mi wybrać opcję.
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.
Nuta
Obsługiwane typy kont można zmienić, odwołując się do modyfikowania 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ądzanie wybierz pozycję Uwidaczniaj interfejs API > Dodaj zakres. Zaakceptuj proponowany identyfikator URI
(api://{clientId})
identyfikatora aplikacji, wybierając pozycję Zapisz i kontynuuj. Jest{clientId}
to wartość zarejestrowana na stronie Przegląd . Następnie wprowadź następujące informacje:- W polu Nazwa zakresu wprowadź wartość
Forecast.Read
. - W obszarze Kto może wyrazić zgodę, upewnij się, że wybrano opcję Administratorzy i użytkownicy .
- W polu Nazwa wyświetlana zgody administratora wprowadź .
Read forecast data
- W polu Opis zgody administratora wprowadź .
Allows the application to read weather forecast data
- W polu Nazwa wyświetlana zgody użytkownika wprowadź .
Read forecast data
- W polu Opis zgody użytkownika wprowadź wartość
Allows the application to read weather forecast data
. - Upewnij się, że stan jest ustawiony na Włączone.
- W polu Nazwa zakresu wprowadź wartość
Wybierz pozycję Dodaj zakres. Jeśli zakres został wprowadzony poprawnie, jest on wyświetlany w okienku Uwidaczniaj interfejs API .
Klonowanie lub pobieranie przykładowej aplikacji
Aby uzyskać przykładową aplikację, możesz ją sklonować z usługi GitHub lub pobrać jako plik .zip .
Aby sklonować przykład, otwórz wiersz polecenia i przejdź do miejsca, w którym chcesz utworzyć projekt, a następnie wprowadź następujące polecenie:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
Pobierz plik .zip. Wyodrębnij go do ścieżki pliku, w której długość nazwy jest mniejsza niż 260 znaków.
Konfigurowanie przykładowej aplikacji ASP.NET Core
W środowisku IDE otwórz folder projektu ms-identity-docs-code-dotnet/web-api zawierający przykład.
Otwórz
appsettings.json
plik, który zawiera następujący fragment kodu:{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center", "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center", "Scopes": "Forecast.Read" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Znajdź następujące elementy
key
:ClientId
— Identyfikator aplikacji, nazywany również klientem. Zastąpvalue
tekst w cudzysłowach identyfikatorem aplikacji (klienta), który został zarejestrowany wcześniej na stronie Przegląd zarejestrowanej aplikacji.TenantId
— identyfikator dzierżawy, w której zarejestrowano aplikację. Zastąpvalue
tekst w cudzysłowach wartością identyfikatora katalogu (dzierżawy), która została zarejestrowana wcześniej na stronie Przegląd zarejestrowanej aplikacji.
Uruchamianie przykładowej aplikacji
Uruchom następujące polecenie, aby uruchomić aplikację:
dotnet run
Zostanie wyświetlone dane wyjściowe podobne do następującego przykładu:
... info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:{port} ...
Zarejestruj numer portu w adresie
http://localhost:{port}
URL.Aby sprawdzić, czy punkt końcowy jest chroniony, zaktualizuj podstawowy adres URL w następującym poleceniu cURL, aby dopasować go do otrzymanego w poprzednim kroku, a następnie uruchom polecenie:
curl -X GET https://localhost:5001/weatherforecast -ki
Oczekiwana odpowiedź to 401 Brak autoryzacji z danymi wyjściowymi podobnymi do następujących:
user@host:~$ curl -X GET https://localhost:5001/weatherforecast -ki HTTP/2 401 date: Fri, 23 Sep 2023 23:34:24 GMT server: Kestrel www-authenticate: Bearer content-length: 0
Następne kroki
Przejdź do następnego artykułu, aby dowiedzieć się, jak wywołać chroniony internetowy interfejs API przy użyciu biblioteki cURL.