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.
W tym artykule przedstawiono sposób wywoływania chronionego internetowego interfejsu API platformy ASP.NET Core przy użyciu adresu URL klienta (cURL). cURL to narzędzie wiersza polecenia, którego deweloperzy używają do transferu danych do i z serwera. W tym artykule zarejestrujesz aplikację internetową i internetowy interfejs API w dzierżawie. Aplikacja internetowa służy do uzyskiwania tokenu dostępu wygenerowanego przez Platforma tożsamości Microsoft. Następnie użyj tokenu, aby wykonać autoryzowane wywołanie interfejsu API przy pomocy cURL.
W tym artykule przedstawiono sposób wywoływania chronionego internetowego interfejsu API platformy ASP.NET Core przy użyciu adresu URL klienta (cURL). cURL to narzędzie wiersza polecenia, którego deweloperzy używają do transferu danych do i z serwera. Kontynuując z Samouczek: zaimplementowałeś chroniony punkt końcowy w swoim interfejsie API, gdzie utworzono chroniony interfejs API, musisz zarejestrować aplikację internetową w platformie tożsamości Microsoft, aby wygenerować token dostępu. Następnie użyjesz tokenu, aby wykonać autoryzowane wywołanie interfejsu API przy użyciu biblioteki cURL.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz bezpłatne konto.
- To konto platformy Azure musi mieć uprawnienia do zarządzania aplikacjami. Każda z następujących ról firmy Microsoft Entra obejmuje wymagane uprawnienia:
- Administrator aplikacji
- Deweloper aplikacji
- Administrator aplikacji w chmurze
- Pobierz i zainstaluj program cURL na komputerze stacji roboczej.
- Minimalne wymaganie zestawu .NET 8.0 SDK.
- Konto platformy Azure z aktywną subskrypcją. Utwórz bezpłatne konto.
- To konto platformy Azure musi mieć uprawnienia do zarządzania aplikacjami. Każda z następujących ról firmy Microsoft Entra obejmuje wymagane uprawnienia:
- Administrator aplikacji
- Deweloper aplikacji
- Administrator aplikacji w chmurze
- Ukończenie serii samouczków:
- Pobierz i zainstaluj program cURL na komputerze stacji roboczej.
Rejestrowanie aplikacji za pomocą platformy tożsamości firmy Microsoft
Platforma tożsamości Microsoft wymaga zarejestrowania aplikacji przed udostępnieniem usług zarządzania tożsamościami i dostępem. Rejestracja aplikacji umożliwia określenie nazwy i typu aplikacji oraz odbiorców logowania. Odbiorcy logowania określają, jakie typy kont użytkowników mogą logować się do danej aplikacji.
Zarejestruj internetowy interfejs API
Wykonaj następujące kroki, aby utworzyć rejestrację internetowego interfejsu API:
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 obszaruRejestracje aplikacji>.
Wybierz pozycję Nowa rejestracja.
Wprowadź nazwę aplikacji, na przykład NewWebAPI1.
Dla Obsługiwanych typów kont wybierz opcję 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.
Uwaga
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 jest prawidłowy.
W obszarze Zarządzanie wybierz pozycję Uwidaczniaj interfejs API > Dodaj zakres. Zaakceptuj proponowany URI identyfikatora aplikacji
(api://{clientId}), wybierając Zapisz i kontynuuj. To jest wartość zarejestrowana z strony{clientId}. 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 Dodaj zakres. Jeśli zakres został wprowadzony poprawnie, zostanie wyświetlony w okienku Uwidacznij interfejs API .
Rejestrowanie aplikacji internetowej
Posiadanie internetowego interfejsu API nie wystarczy, ponieważ aplikacja internetowa jest również potrzebna do uzyskania tokenu dostępu w celu uzyskania dostępu do utworzonego internetowego interfejsu API.
Wykonaj następujące kroki, aby utworzyć rejestrację aplikacji internetowej:
- Wybierz pozycję Strona główna , aby wrócić do strony głównej. Przejdź do obszaruRejestracje aplikacji>.
- Wybierz pozycję Nowa rejestracja.
- Wprowadź nazwę aplikacji, na przykład
web-app-calls-web-api. - Dla Obsługiwanych typów kont wybierz opcję Konta tylko w tym katalogu organizacyjnym. Aby uzyskać informacje o różnych typach kont, wybierz opcję Pomóż mi wybrać.
- W obszarze Identyfikator URI przekierowania (opcjonalnie) wybierz pozycję Sieć Web, a następnie wprowadź
http://localhostw polu tekstowym URL. - Wybierz pozycję Zarejestruj.
- 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 obszaruRejestracje aplikacji>.
- Wybierz pozycję Nowa rejestracja.
- Wprowadź nazwę aplikacji, na przykład
web-app-calls-web-api. - Dla Obsługiwanych typów kont wybierz opcję Konta tylko w tym katalogu organizacyjnym. Aby uzyskać informacje o różnych typach kont, wybierz opcję Pomóż mi wybrać.
- W obszarze Identyfikator URI przekierowania (opcjonalnie) wybierz pozycję Sieć Web, a następnie wprowadź
http://localhostw polu tekstowym URL. - Wybierz pozycję Zarejestruj.
Po zakończeniu rejestracji rejestracja jest wyświetlana w okienku Przegląd . Zanotuj identyfikator katalogu (dzierżawy) i identyfikator aplikacji (klienta), które mają być używane w kolejnych krokach.
Dodaj klucz tajny klienta
Tajemnica klienta to wartość ciągu, której aplikacja może używać do swojej identyfikacji, a czasami jest nazywana hasłem aplikacji. Aplikacja internetowa używa klucza tajnego klienta, aby udowodnić swoją tożsamość podczas żądania tokenów.
Wykonaj następujące kroki, aby skonfigurować klucz tajny klienta:
W okienku Przegląd w obszarze Zarządzanie wybierz pozycję Certyfikaty i wpisy tajne>Wpisy tajne klienta>Nowy wpis tajny klienta.
Dodaj opis dla swojej tajemnicy klienta, na przykład Moja tajemnica klienta.
Wybierz datę wygaśnięcia klucza tajnego lub określ niestandardowy okres ważności.
- Okres ważności tajnego klucza klienta jest ograniczony do dwóch lat (24 miesięcy) lub mniej. Nie można określić niestandardowego okresu ważności dłuższego niż 24 miesiące.
- Firma Microsoft zaleca ustawienie wartości wygaśnięcia mniejszej niż 12 miesięcy.
Wybierz pozycję Dodaj.
Pamiętaj, aby zanotować wartość tajemnicy klienta. Ta tajna wartość nigdy nie jest wyświetlana ponownie po opuszczeniu tej strony.
Dodawanie uprawnień aplikacji w celu zezwolenia na dostęp do internetowego interfejsu API
Określając zakresy internetowego interfejsu API w rejestracji aplikacji internetowej, aplikacja internetowa może uzyskać token dostępu zawierający zakresy dostarczone przez Platforma tożsamości Microsoft. W kodzie web API może następnie umożliwić dostęp oparty na uprawnieniach do swoich zasobów na podstawie zakresów znalezionych w tokenie dostępu.
Wykonaj następujące kroki, aby skonfigurować uprawnienia aplikacji internetowej do internetowego interfejsu API:
- W okienku Przegląd aplikacji internetowej (web-app-that-calls-web-api) w obszarze Zarządzanie wybierz Uprawnienia API>Dodaj uprawnienie>API używane przez moją organizację.
- Wybierz NewWebAPI1 lub interfejs API, do którego chcesz dodać uprawnienia.
- W obszarze Wybierz uprawnienia zaznacz pole wyboru obok pozycji Forecast.Read. Może być konieczne rozwinięcie listy uprawnień . Spowoduje to wybranie uprawnień, które aplikacja kliencka powinna mieć w imieniu zalogowanego użytkownika.
- Wybierz pozycję Dodaj uprawnienia , aby ukończyć proces.
Po dodaniu tych uprawnień do interfejsu API powinny zostać wyświetlone wybrane uprawnienia w obszarze Skonfigurowane uprawnienia.
Możliwe, że również zauważysz uprawnienie User.Read dla interfejsu API Microsoft Graph. To uprawnienie jest dodawane automatycznie podczas rejestrowania aplikacji.
Testuj internetowy interfejs API
Sklonuj repozytorium ms-identity-docs-code-dotnet .
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.gitPrzejdź do folderu
ms-identity-docs-code-dotnet/web-apii otwórz plik./appsettings.json, zastąp{APPLICATION_CLIENT_ID}i{DIRECTORY_TENANT_ID}następująco:to identyfikator aplikacji (klienta) interfejsu API sieci Web na panelu Przegląd aplikacjiRejestracje aplikacji .-
{DIRECTORY_TENANT_ID}to Identyfikator katalogu (dzierżawy) interfejsu API sieciowego w sekcji Przegląd aplikacji, w części Rejestracje aplikacji.
Uruchom następujące polecenie, aby uruchomić aplikację:
Zostaną wyświetlone dane wyjściowe podobne do poniższych. Zarejestruj numer portu w adresie
https://localhost:{port}URL.... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:{port} ...
Testuj internetowy interfejs API
Przejdź do internetowego interfejsu API utworzonego w artykule Samouczek: tworzenie projektu ASP.NET Core i konfigurowanie interfejsu API, na przykład NewWebAPILocal, i otwórz folder.
Otwórz nowe okno terminalu i przejdź do folderu, w którym znajduje się projekt internetowego interfejsu API.
Zostaną wyświetlone dane wyjściowe podobne do poniższych. Zarejestruj numer portu w adresie
https://localhost:{port}URL.... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:{port} ...
Żądanie kodu autoryzacji
Przepływ kodu autoryzacji rozpoczyna się od klienta kierującego użytkownika do punktu końcowego /authorize . W tym żądaniu klient żąda Forecast.Read uprawnień od użytkownika.
https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize?client_id={web-app-calls-web-api_application_client_id}&response_type=code&redirect_uri=http://localhost&response_mode=query&scope=api://{web_API_application_client_id}/Forecast.Read
Skopiuj adres URL, zastąp następujące parametry i wklej go w przeglądarce:
-
{tenant_id}to identyfikator najemcy (ID katalogu) aplikacji internetowej. -
{web-app-calls-web-api_application_client_id}to identyfikator aplikacji (klienta) w okienku Przegląd aplikacji internetowej (web-app-calls-web-api). -
{web_API_application_client_id}to identyfikator aplikacji (klienta) w okienku Przegląd interfejsu API sieci Web (NewWebAPI1).
-
Zaloguj się jako użytkownik w dzierżawie Microsoft Entra, w której zarejestrowano aplikacje. W razie potrzeby wyrażanie zgody na wszelkie żądania dostępu.
Przeglądarka zostanie przekierowana do
http://localhost/. Zapoznaj się z paskiem nawigacyjnym przeglądarki i skopiuj element{authorization_code}, aby użyć go w poniższych krokach. Adres URL ma postać następującego fragmentu kodu:http://localhost/?code={authorization_code}
Użyj kodu autoryzacji i cURL, aby uzyskać token dostępu
Program cURL może teraz służyć do żądania tokenu dostępu z Platforma tożsamości Microsoft.
Skopiuj polecenie cURL w poniższym fragmencie kodu. Zastąp wartości w nawiasach następującymi parametrami do terminalu. Pamiętaj, aby usunąć nawiasy:
curl -X POST https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token \ -d 'client_id={web-app-calls-web-api_application_client_id}' \ -d 'api://{web_API_application_client_id}/Forecast.Read' \ -d 'code={authorization_code}&session_state={web-app-calls-web-api_application_client_id}' \ -d 'redirect_uri=http://localhost' \ -d 'grant_type=authorization_code' \ -d 'client_secret={client_secret}'-
{tenant_id}to identyfikator najemcy (ID katalogu) aplikacji internetowej. -
client_id={web-app-calls-web-api_application_client_id}orazsession_state={web-app-calls-web-api_application_client_id}to identyfikator aplikacji (klienta) w panelu Przegląd aplikacji internetowej (web-app-calls-web-api). -
api://{web_API_application_client_id}/Forecast.Readto identyfikator aplikacji (klienta) w okienku Przegląd interfejsu API sieci Web (NewWebAPI1). -
code={authorization_code}to kod autoryzacji, który został odebrany w żądaniu kodu autoryzacji. Dzięki temu narzędzie cURL może zażądać tokenu dostępu. -
client_secret={client_secret}to tajemnica klienta Wartość zarejestrowana w Dodaj tajemnicę klienta.
-
Uruchom polecenie cURL i jeśli wprowadzono poprawnie, powinna zostać odebrana odpowiedź JSON podobna do następujących danych wyjściowych:
{ "token_type": "Bearer", "scope": "api://{web_API_application_client_id}/Forecast.Read", "expires_in": 3600, "ext_expires_in": 3600, "access_token": "{access_token}" }
Wywoływanie internetowego interfejsu API przy użyciu tokenu dostępu
Uruchamiając poprzednie polecenie cURL, platforma tożsamości Microsoft dostarczyła token dostępu. Uzyskany token może być teraz używany jako element nośny w żądaniu HTTP w celu wywołania internetowego interfejsu API.
Aby wywołać internetowy interfejs API, skopiuj następujące polecenie cURL, zastąp następujące wartości w nawiasach i wklej go w terminalu:
curl -X GET https://localhost:{port}/weatherforecast -ki \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer {access_token}"-
{access_token}wartość tokenu dostępu zarejestrowana z danych wyjściowych JSON w poprzedniej sekcji. -
{port}numer portu z API sieciowego odnotowany podczas uruchamiania API w terminalu. Upewnij się, że tohttpsjest numer portu.
-
W przypadku prawidłowego tokenu dostępu zawartego w żądaniu oczekiwana odpowiedź jest
HTTP/2 200z danymi wyjściowymi podobnymi do następujących danych wyjściowych:HTTP/2 200 content-type: application/json; charset=utf-8 date: Day, DD Month YYYY HH:MM:SS server: Kestrel [{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":36,"summary":"Hot","temperatureF":96},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":43,"summary":"Warm","temperatureF":109},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":18,"summary":"Warm","temperatureF":64},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":50,"summary":"Chilly","temperatureF":121},{"date":"YYYY-MM-DDTHH:MM:SS","temperatureC":3,"summary":"Bracing","temperatureF":37}]
Następne kroki
Aby uzyskać więcej informacji na temat przepływu kodu autoryzacji OAuth 2.0 i typów aplikacji, zobacz: