Uwierzytelnianie i autoryzacja usługi Static Web Apps

Usługa Azure Static Web Apps zapewnia usprawnione środowisko uwierzytelniania, w którym do uwierzytelniania nie jest wymagana żadna dodatkowa konfiguracja.

W tym artykule dowiesz się więcej o zachowaniu domyślnym, sposobie konfigurowania logowania i wylogowania, sposobie blokowania dostawcy uwierzytelniania i nie tylko.

Możesz zarejestrować dostawcę niestandardowego, który wyłącza wszystkich wstępnie skonfigurowanych dostawców.

Ostrzeżenie

Ze względu na zmiany w zasadach interfejsu API X (dawniej Twitter) obsługa nie jest dostępna jako część wstępnie skonfigurowanych dostawców aplikacji. Jeśli chcesz nadal używać języka X (dawniej Twitter) do uwierzytelniania/autoryzacji w aplikacji, zaktualizuj konfigurację aplikacji, aby zarejestrować dostawcę niestandardowego.

Wymagania wstępne

Należy pamiętać o następujących wartościach domyślnych i zasobach na potrzeby uwierzytelniania i autoryzacji w usłudze Azure Static Web Apps.

Ustawienia domyślne:

  • Każdy użytkownik może uwierzytelnić się za pomocą wstępnie skonfigurowanego dostawcy
    • GitHub
    • Microsoft Entra ID
    • Aby ograniczyć dostawcę uwierzytelniania, zablokuj dostęp za pomocą niestandardowej reguły trasy
  • Po zalogowaniu anonymous użytkownicy należą do ról i .authenticated Aby uzyskać więcej informacji na temat ról, zobacz Zarządzanie rolami

Zasoby:

  • Definiowanie reguł w pliku staticwebapp.config.json dla autoryzowanych użytkowników w celu uzyskania dostępu do tras z ograniczeniami
  • Przypisywanie ról niestandardowych użytkowników przy użyciu wbudowanego systemu zaproszeń
  • Programowe przypisywanie ról niestandardowych użytkowników podczas logowania przy użyciu funkcji interfejsu API
  • Zrozumienie, że uwierzytelnianie i autoryzacja znacząco nakładają się na pojęcia dotyczące routingu, które zostały szczegółowo opisane w przewodniku konfiguracji aplikacji
  • Ogranicz logowanie do określonej dzierżawy identyfikatora entra firmy Microsoft, konfigurując niestandardowego dostawcę identyfikatora entra firmy Microsoft. Wstępnie skonfigurowany dostawca identyfikatorów Entra firmy Microsoft umożliwia logowanie się na dowolnym koncie Microsoft.

Konfigurowanie logowania

Usługa Azure Static Web Apps używa folderu systemowego /.auth do zapewnienia dostępu do interfejsów API związanych z autoryzacją. Zamiast uwidaczniać dowolne trasy w /.auth folderze bezpośrednio dla użytkowników końcowych, utwórz reguły routingu dla przyjaznych adresów URL.

Skorzystaj z poniższej tabeli, aby znaleźć trasę specyficzną dla dostawcy.

Dostawca autoryzacji Trasa logowania
Microsoft Entra ID /.auth/login/aad
GitHub /.auth/login/github

Aby na przykład zalogować się przy użyciu usługi GitHub, możesz użyć adresu URL podobnego do poniższego przykładu.

<a href="/.auth/login/github">Login</a>

Jeśli zdecydujesz się obsługiwać więcej niż jednego dostawcę, użyj linku specyficznego dla dostawcy dla każdego dostawcy w witrynie internetowej. Użyj reguły trasy, aby zamapować domyślnego dostawcę na przyjazną trasę, na przykład /login.

{
  "route": "/login",
  "redirect": "/.auth/login/github"
}

Konfigurowanie przekierowania po zalogowaniu

Po zalogowaniu można zwrócić użytkownika do określonej strony, podając w pełni kwalifikowany adres URL w parametrze post_login_redirect_uri ciągu zapytania.

<a href="/.auth/login/github?post_login_redirect_uri=https://zealous-water.azurestaticapps.net/success">Login</a>

You can also redirect unauthenticated users back to the referring page after they sign in. To add this redirect, create a response override rule that sets post_login_redirect_uri to .referrer, like in the following example.

{
  "responseOverrides": {
    "401": {
      "redirect": "/.auth/login/github?post_login_redirect_uri=.referrer",
      "statusCode": 302
    }
  }
}

Konfigurowanie wylogowywanie

Trasa /.auth/logout powoduje wylogowanie użytkowników z witryny internetowej. Możesz dodać link do nawigacji witryny, aby umożliwić użytkownikowi wylogowanie się, tak jak w poniższym przykładzie.

<a href="/.auth/logout">Log out</a>

Użyj reguły trasy, aby zamapować przyjazną trasę, na przykład /logout.

{
  "route": "/logout",
  "redirect": "/.auth/logout"
}

Konfigurowanie przekierowania po wylogowaniach

Aby zwrócić użytkownika do określonej strony po wylogowaniu się, podaj adres URL w post_logout_redirect_uri parametrze ciągu zapytania.

Blokowanie dostawcy uwierzytelniania

Domyślnie wszyscy dostawcy uwierzytelniania są włączeni, ale możesz ograniczyć aplikację do korzystania z dostawcy. Na przykład aplikacja może chcieć używać tylko dostawców, którzy uwidaczniają adresy e-mail.

Aby zablokować dostawcę, utwórz regułę 404 trasy, aby zwrócić kod stanu żądań do zablokowanej trasy specyficznej dla dostawcy. Aby na przykład ograniczyć dostawcę identyfikatora entra (dawniej Azure Active Directory, znanego jako "aad"), dodaj następującą regułę trasy.

{
  "route": "/.auth/login/aad",
  "statusCode": 404
}

Usuwanie danych osobowych

Gdy wyrażasz zgodę na aplikację jako użytkownik końcowy, aplikacja ma dostęp do adresu e-mail lub nazwy użytkownika w zależności od dostawcy tożsamości. Po podaniu tych informacji właściciel aplikacji może zdecydować, jak zarządzać danymi osobowymi.

Użytkownicy końcowi muszą skontaktować się z administratorami poszczególnych aplikacji internetowych, aby odwołać te informacje z ich systemów.

Aby usunąć dane osobowe z platformy Azure Static Web Apps i uniemożliwić platformie dostarczanie tych informacji na temat przyszłych żądań, prześlij żądanie przy użyciu następującego adresu URL:

https://identity.azurestaticapps.net/.auth/purge/<AUTHENTICATION_PROVIDER_NAME>

To prevent the platform from providing this information on future requests to individual apps, submit a request using the following URL:

https://<WEB_APP_DOMAIN_NAME>/.auth/purge/<AUTHENTICATION_PROVIDER_NAME>

If you're using Microsoft Entra ID, use aad as the value for the <AUTHENTICATION_PROVIDER_NAME> placeholder.

Tip

For information about general restrictions and limitations, see Quotas.

Następny krok