Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Od 1 maja 2025 r. usługa Azure AD B2C nie będzie już dostępna do zakupu dla nowych klientów. Dowiedz się więcej w naszych często zadawanych pytaniach.
W tym artykule użyto przykładowej aplikacji internetowej ASP.NET, która wywołuje internetowy interfejs API, aby zilustrować sposób dodawania uwierzytelniania usługi Azure Active Directory B2C (Azure AD B2C) do aplikacji internetowych.
Ważne
Przykładowa aplikacja internetowa ASP.NET, do którego odwołuje się ten artykuł, jest używana do wywoływania internetowego interfejsu API za pomocą tokenu elementu nośnego. Aby zapoznać się z aplikacją internetową, która nie wywołuje internetowego interfejsu API, zobacz Konfigurowanie uwierzytelniania w przykładowej aplikacji internetowej przy użyciu usługi Azure AD B2C.
Przegląd
OpenID Connect (OIDC) to protokół uwierzytelniania oparty na protokole OAuth 2.0. Aby bezpiecznie zalogować użytkownika do aplikacji, możesz użyć funkcji OIDC. Ten przykład aplikacji internetowej korzysta z witryny Microsoft Identity Web. Microsoft Identity Web to zestaw bibliotek ASP.NET Core, które upraszczają dodawanie obsługi uwierzytelniania i autoryzacji do aplikacji internetowych, które mogą wywoływać bezpieczny internetowy interfejs API.
Przepływ logowania obejmuje następujące kroki:
Użytkownicy przechodzą do aplikacji internetowej i wybierają pozycję Zaloguj się.
Aplikacja inicjuje żądanie uwierzytelniania i przekierowuje użytkowników do usługi Azure AD B2C.
Użytkownicy zarejestrują się lub zalogują się i zresetuj hasło. Alternatywnie mogą zalogować się przy użyciu konta społecznościowego.
Po zalogowaniu użytkowników usługa Azure AD B2C zwraca kod autoryzacji do aplikacji.
Następnie aplikacja wykonuje następujące czynności:
a. Wymienia kod autoryzacji na token identyfikacyjny, token dostępu i token odświeżania.
b. Odczytuje oświadczenia tokenu identyfikatora i utrwala plik cookie autoryzacji aplikacji.
c. Przechowuje token odświeżania w pamięci podręcznej do późniejszego użycia.
Omówienie rejestracji aplikacji
Aby umożliwić aplikacji logowanie się za pomocą usługi Azure AD B2C i wywoływanie internetowego interfejsu API, należy zarejestrować dwie aplikacje w katalogu usługi Azure AD B2C.
Rejestracja aplikacji internetowej umożliwia aplikacji logowanie się za pomocą usługi Azure AD B2C. Podczas rejestracji należy określić identyfikator URI przekierowania. Identyfikator URI przekierowania to punkt końcowy, do którego użytkownicy są przekierowywani przez usługę Azure AD B2C po zakończeniu uwierzytelniania za pomocą usługi Azure AD B2C. Proces rejestracji aplikacji generuje identyfikator aplikacji, znany również jako identyfikator klienta, który jednoznacznie identyfikuje twoją aplikację. Tworzysz również klucz tajny klienta, którego aplikacja używa do bezpiecznego uzyskiwania tokenów.
Rejestracja internetowego interfejsu API umożliwia aplikacji wywoływanie bezpiecznego internetowego interfejsu API. Rejestracja obejmuje zakresy internetowego interfejsu API. Zakresy umożliwiają zarządzanie uprawnieniami do chronionych zasobów, takich jak internetowy interfejs API. Przyznasz aplikacji internetowej uprawnienia do zakresów internetowego interfejsu API. Po zażądaniu tokenu dostępu aplikacja określa żądane uprawnienia w parametrze zakresu żądania.
Architektura i rejestracje aplikacji przedstawiono na poniższym diagramie:
Wezwanie do API sieciowego
Po zakończeniu uwierzytelniania użytkownicy wchodzą w interakcję z aplikacją, która wywołuje chroniony internetowy interfejs API. Internetowy interfejs API używa uwierzytelniania za pomocą tokenu nosiciela. Token elementu nośnego to token dostępu uzyskany przez aplikację z usługi Azure AD B2C. Aplikacja przekazuje token w nagłówku autoryzacji żądania HTTPS.
Authorization: Bearer <access token>
Jeśli zakres tokenu dostępu nie jest zgodny z zakresami internetowego interfejsu API, biblioteka uwierzytelniania uzyskuje nowy token dostępu z poprawnymi zakresami.
Wyloguj się
Przepływ wylogowania obejmuje następujące kroki:
- Z aplikacji użytkownicy się wylogowują.
- Aplikacja czyści obiekty sesji, a biblioteka uwierzytelniania czyści pamięć podręczną tokenów.
- Aplikacja przenosi użytkowników do punktu końcowego wylogowania usługi Azure AD B2C, aby zakończyć sesję usługi Azure AD B2C.
- Użytkownicy są przekierowywani z powrotem do aplikacji.
Wymagania wstępne
Komputer z jedną z następujących funkcji:
- Program Visual Studio 2022 w wersji 17.0 lub nowszej z pakietem roboczym ASP.NET i tworzenie aplikacji internetowych
- Zestaw SDK dla platformy .NET 6.0
Krok 1. Konfigurowanie przepływu użytkownika
Gdy użytkownicy próbują zalogować się do aplikacji, aplikacja uruchamia żądanie uwierzytelniania za pośrednictwem przepływu użytkownika do punktu końcowego autoryzacji. Przepływ użytkownika definiuje i kontroluje środowisko użytkownika. Po zakończeniu przepływu użytkownika usługa Azure AD B2C generuje token, a następnie przekierowuje użytkowników z powrotem do aplikacji.
Jeśli jeszcze tego nie zrobiono, utwórz przepływ użytkownika lub politykę niestandardową. Powtórz kroki, aby utworzyć trzy oddzielne przepływy użytkownika w następujący sposób:
- Połączony przepływ logowania i rejestracji użytkownika, taki jak
susi
. Ten przepływ użytkownika obsługuje także funkcję Nie pamiętasz hasła. -
Przepływ użytkownika dotyczący edycji profilu, taki jak
edit_profile
. - Proces resetowania hasła przez użytkownika, taki jak
reset_password
.
Usługa Azure AD B2C dodaje B2C_1_
do nazwy przepływu użytkownika. Na przykład, susi
staje się B2C_1_susi
.
Krok 2. Rejestrowanie aplikacji internetowych
W tym kroku utworzysz aplikację internetową i rejestrację aplikacji internetowego interfejsu API oraz określisz zakresy internetowego interfejsu API.
Krok 2.1: Zarejestruj aplikację interfejsu API WWW
Aby utworzyć rejestrację aplikacji internetowego interfejsu API (identyfikator aplikacji: 2), wykonaj następujące kroki:
Zaloguj się do witryny Azure Portal.
Upewnij się, że używasz katalogu zawierającego tenant usługi Azure AD B2C. Wybierz ikonę Katalogi i subskrypcje na pasku narzędzi portalu.
W ustawieniach portalu | Strona Katalogi i subskrypcje , znajdź katalog usługi Azure AD B2C na liście Nazwa katalogu, a następnie wybierz pozycję Przełącz.
W witrynie Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
Wybierz pozycję Rejestracje aplikacji, a następnie wybierz pozycję Nowa rejestracja.
W polu Nazwa wprowadź nazwę aplikacji (na przykład my-api1). Pozostaw wartości domyślne dla Redirect URI i obsługiwanych typów kont.
Wybierz pozycję Zarejestruj.
Po zakończeniu rejestracji aplikacji wybierz pozycję Przegląd.
Zarejestruj wartość identyfikatora aplikacji (klienta) do późniejszego użycia podczas konfigurowania aplikacji internetowej.
Krok 2.2. Konfigurowanie zakresów aplikacji internetowego interfejsu API
Wybierz utworzoną aplikację my-api1 (identyfikator aplikacji: 2), aby otworzyć stronę Przegląd.
W obszarze Zarządzanie wybierz pozycję Uwidaczniaj interfejs API.
Obok URI identyfikatora aplikacji wybierz link Ustaw. Zastąp wartość domyślną (GUID) unikatową nazwą (na przykład tasks-api), a następnie wybierz pozycję Zapisz.
Gdy aplikacja internetowa żąda tokenu dostępu dla API, powinna dodać ten identyfikator URI jako prefiks dla każdego zakresu zdefiniowanego dla API.
W obszarze Zakresy zdefiniowane przez ten interfejs API, wybierz pozycję Dodaj zakres.
Aby utworzyć zakres definiujący dostęp do odczytu do interfejsu API:
- Dla Nazwa zakresu, wprowadź tasks.read.
- W polu Nazwa wyświetlana zgody administratora, wprowadź Odczyt dostępu do interfejsu API zadań.
- W polu Opis zgody administratora wprowadź Zezwala na dostęp do odczytu do API zadań.
Wybierz Dodaj zakres.
Wybierz pozycję Dodaj zakres, a następnie dodaj zakres definiujący dostęp do zapisu do interfejsu API:
- Dla Nazwa zakresu wpisz tasks.write.
- W polu Wyświetlana nazwa zgody administratora wprowadź Zapis dostępu do interfejsu API zadań.
- W polu Opis zgody administratora wprowadź wartość Zezwalaj na dostęp do zapisu do interfejsu API zadań.
Wybierz Dodaj zakres.
Krok 2.3. Rejestrowanie aplikacji internetowej
Aby utworzyć rejestrację aplikacji internetowej, wykonaj następujące czynności:
Wybierz pozycję Rejestracje aplikacji, a następnie wybierz pozycję Nowa rejestracja.
W obszarze Nazwa wprowadź nazwę aplikacji (na przykład webapp1).
W obszarze Obsługiwane typy kontwybierz Konta w dowolnym dostawcy tożsamości lub katalogu organizacyjnym, aby uwierzytelniać użytkowników za pomocą przepływów użytkowników.
W obszarze Identyfikator URI przekierowania wybierz Web, a następnie w polu Adres URL wprowadź
https://localhost:5000/signin-oidc
.W obszarze Uprawnienia zaznacz pole wyboru Udziel zgody administratora na uprawnienia openid i dostęp offline.
Wybierz pozycję Zarejestruj.
Po zakończeniu rejestracji aplikacji wybierz pozycję Przegląd.
Zarejestruj identyfikator aplikacji (klienta) do późniejszego użycia podczas konfigurowania aplikacji internetowej.
Krok 2.4. Tworzenie wpisu tajnego klienta aplikacji internetowej
Utwórz tajemnicę klienta dla zarejestrowanej aplikacji internetowej. Aplikacja internetowa używa klucza tajnego klienta, aby udowodnić swoją tożsamość, gdy żąda tokenów.
- W obszarze Zarządzanie wybierz pozycję Certyfikaty i wpisy tajne.
- Wybierz Nowy klucz tajny klienta.
- W polu Opis wprowadź opis tajemnicy klienta (na przykład clientsecret1).
- Pod Wygasa wybierz okres czasu, na jaki tajemnica jest ważna, a następnie wybierz Dodaj.
- Zapisz wartość sekretu. Użyjesz tej wartości do konfiguracji w późniejszym kroku.
Krok 2.5. Udzielanie uprawnień aplikacji internetowej dla internetowego interfejsu API
Aby udzielić aplikacji (identyfikator aplikacji: 1) uprawnień, wykonaj następujące kroki:
Wybierz Rejestracje aplikacji, a następnie wybierz utworzoną aplikację (identyfikator aplikacji: 1).
W sekcji Zarządzanie wybierz Uprawnienia API.
W obszarze Skonfigurowane uprawnienia wybierz pozycję Dodaj uprawnienie.
Wybierz kartę Moje interfejsy API.
Wybierz interfejs API (App ID: 2), do którego aplikacja internetowa powinna mieć dostęp. Na przykład wprowadź ciąg my-api1.
W obszarze Uprawnienie rozwiń węzeł zadania, a następnie wybierz zdefiniowane wcześniej zakresy (na przykład tasks.read i tasks.write).
Wybierz Dodaj uprawnienia.
Wybierz pozycję Udziel zgody administratora dla <nazwy dzierżawy>.
Wybierz opcję Tak.
Wybierz Odśwież, a następnie sprawdź, czy pod Stan dla obu zakresów jest wyświetlana wartość Przyznane dla ....
Z listy Skonfigurowane uprawnienia wybierz zakres, a następnie skopiuj pełną nazwę zakresu.
Krok 3. Pobieranie przykładu aplikacji internetowej
Pobierz plik zip lub uruchom następujące polecenie powłoki Bash, aby sklonować przykładową aplikację internetową z usługi GitHub.
git clone https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2
Wyodrębnij przykładowy plik do folderu, w którym całkowita długość ścieżki wynosi 260 lub mniej znaków.
Krok 4. Konfigurowanie przykładowego internetowego interfejsu API
W folderze przykładowym w folderze 4-WebApp-your-API/4-2-B2C/TodoListService otwórz projekt TodoListService.csproj za pomocą programu Visual Studio lub Visual Studio Code.
W folderze głównym projektu otwórz plik appsettings.json . Ten plik zawiera informacje o dostawcy tożsamości usługi Azure AD B2C. Aplikacja API wykorzystuje te informacje do weryfikacji tokenu dostępu, który aplikacja internetowa przekazuje jako token nosiciela. Zaktualizuj następujące właściwości ustawień aplikacji:
Sekcja | Klawisz | Wartość |
---|---|---|
AzureAdB2C | Wystąpienie | Pierwsza część nazwy dzierżawy usługi Azure AD B2C . Na przykład https://contoso.b2clogin.com . |
AzureAdB2C | Domena | Pełna nazwa dzierżawy usługi Azure AD B2C. Na przykład contoso.onmicrosoft.com . |
AzureAdB2C | ClientId | Identyfikator aplikacji internetowego interfejsu API z kroku 2.1. |
AzureAdB2C | SignUpSignInPolicyId (Identyfikator Polityki Rejestracji i Logowania) | Przepływy użytkownika lub zasady niestandardowe utworzone w kroku 1. |
Ostateczny plik konfiguracji powinien wyglądać podobnie do następującego pliku JSON:
{
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "contoso.onmicrosoft.com",
"ClientId": "<web-api-app-application-id>",
"SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
"SignUpSignInPolicyId": "<your-sign-up-in-policy>"
},
// More settings here
}
Krok 4.1. Ustawianie zasad uprawnień
Internetowy interfejs API sprawdza, czy użytkownik uwierzytelniony przy użyciu tokenu elementu nośnego, a token elementu nośnego ma skonfigurowane zaakceptowane zakresy. Jeśli token elementu nośnego nie ma żadnego z tych akceptowanych zakresów, internetowy interfejs API zwraca kod stanu HTTP 403 (Zabronione) i zapisuje w treści odpowiedzi komunikat informujący, które zakresy są oczekiwane w tokenie.
Aby skonfigurować zaakceptowane zakresy, otwórz klasę Controller/TodoListController.cs
i ustaw nazwę zakresu bez pełnego identyfikatora URI.
[RequiredScope("tasks.read")]
Krok 4.2. Uruchamianie przykładowej aplikacji internetowego interfejsu API
Aby umożliwić aplikacji internetowej wywołanie przykładowego internetowego interfejsu API, uruchom internetowy interfejs API, wykonując następujące czynności:
- Jeśli chcesz to zrobić, przywróć zależności.
- Skompiluj i uruchom projekt.
- Po skompilaniu projektu program Visual Studio lub Visual Studio Code uruchamia internetowy interfejs API w przeglądarkach o następującym adresie: https://localhost:44332.
Krok 5. Konfigurowanie przykładowej aplikacji internetowej
W folderze przykładowym w folderze 4-WebApp-your-API/4-2-B2C/Client
otwórz projekt TodoListClient.csproj za pomocą programu Visual Studio lub Visual Studio Code.
W folderze głównym projektu otwórz appsettings.json
plik. Ten plik zawiera informacje o dostawcy tożsamości usługi Azure AD B2C. Aplikacja internetowa używa tych informacji do ustanawiania relacji zaufania z usługą Azure AD B2C, logowania użytkowników i wylogowywanie ich, uzyskiwanie tokenów i ich weryfikowanie. Zaktualizuj następujące właściwości ustawień aplikacji:
Sekcja | Klawisz | Wartość |
---|---|---|
AzureAdB2C | Wystąpienie | Pierwsza część nazwy dzierżawcy usługi Azure AD B2C (na przykład https://contoso.b2clogin.com ). |
AzureAdB2C | Domena | Pełna nazwa dzierżawcy usługi Azure AD B2C (na przykład contoso.onmicrosoft.com ). |
AzureAdB2C | ClientId | Identyfikator aplikacji internetowej z kroku 2.3. |
AzureAdB2C | Klucz tajny klienta | Wpis tajny aplikacji internetowej z kroku 2.4. |
AzureAdB2C | SignUpSignInPolicyId (Identyfikator Polityki Rejestracji i Logowania) | Przepływy użytkownika lub zasady niestandardowe utworzone w kroku 1. |
Lista zadań do wykonania | TodoListScope (Zakres listy) | Zakresy internetowego interfejsu API utworzone w kroku 2.5. |
Lista zadań do wykonania | TodoListBaseAddress (adres_bazowy) | Podstawowy identyfikator URI internetowego interfejsu API (na przykład https://localhost:44332 ). |
Ostateczny plik konfiguracji powinien wyglądać podobnie do następującego kodu JSON:
{
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "contoso.onmicrosoft.com",
"ClientId": "<web-app-application-id>",
"ClientSecret": "<web-app-application-secret>",
"SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
"SignUpSignInPolicyId": "<your-sign-up-in-policy>"
},
"TodoList": {
"TodoListScope": "https://contoso.onmicrosoft.com/api/demo.read",
"TodoListBaseAddress": "https://localhost:44332"
}
}
Krok 6. Uruchamianie przykładowej aplikacji internetowej
- Skompiluj i uruchom projekt.
- Przejdź do
https://localhost:5000
. - Ukończ proces rejestracji lub logowania.
Po pomyślnym uwierzytelnieniu na pasku nawigacyjnym zobaczysz wyświetlaną nazwę. Aby wyświetlić oświadczenia, które token usługi Azure AD B2C powraca do aplikacji, wybierz pozycję TodoList.
Wdrażanie aplikacji
W aplikacji produkcyjnej identyfikator URI przekierowania rejestracji aplikacji jest zazwyczaj publicznie dostępnym punktem końcowym, w którym aplikacja jest uruchomiona, na przykład https://contoso.com/signin-oidc
.
W dowolnym momencie możesz dodawać i modyfikować identyfikatory URI przekierowania w zarejestrowanych aplikacjach. Następujące ograniczenia dotyczą adresów URL przekierowania:
- Adres URL odpowiedzi musi zaczynać się od schematu
https
. - Adres URL odpowiedzi jest wrażliwy na wielkość liter. Jego wielkość liter musi być zgodna z wielkością liter ścieżki adresu URL uruchomionej aplikacji.
Pamięć podręczna tokenów dla aplikacji internetowej
Przykład aplikacji internetowej używa serializacji pamięci podręcznej tokenu w pamięci. Ta implementacja doskonale sprawdza się w przykładach. Jest to również dobre w aplikacjach produkcyjnych, pod warunkiem, że nie masz nic przeciwko utracie pamięci podręcznej tokenów po ponownym uruchomieniu aplikacji internetowej.
W środowisku produkcyjnym zalecamy użycie rozproszonej pamięci podręcznej. Na przykład pamięć podręczna Redis Cache, NCache lub pamięć podręczna programu SQL Server. Aby uzyskać szczegółowe informacje na temat implementacji rozproszonej pamięci podręcznej, zobacz Serializacja pamięci podręcznej tokenów.
Dalsze kroki
- Dowiedz się więcej o przykładzie kodu.
- Dowiedz się, jak włączyć uwierzytelnianie we własnej aplikacji internetowej przy użyciu usługi Azure AD B2C.
- Dowiedz się, jak włączyć uwierzytelnianie we własnym internetowym interfejsie API.