Uwierzytelnianie i autoryzacja usługi Static Web Apps

Ostrzeżenie

Ze względu na zmiany w zasadach interfejsu API X (dawniej Twitter) nie możemy nadal obsługiwać go jako części 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.

Usługa Azure Static Web Apps zapewnia usprawnione środowisko uwierzytelniania, w którym żadne inne akcje lub konfiguracje nie są wymagane do korzystania z usług GitHub i Microsoft Entra ID do uwierzytelniania.

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.

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 uwierzytelniać 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 firmy Microsoft Entra, konfigurując niestandardowego dostawcę usługi Microsoft Entra. Wstępnie skonfigurowany dostawca microsoft Entra 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ę za pomocą usługi GitHub, możesz dołączyć coś podobnego do poniższego linku.

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

Jeśli zdecydujesz się obsługiwać więcej niż jednego dostawcę, uwidocznij link specyficzny dla dostawcy dla każdego z nich 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

Zwróć użytkownika do określonej strony po zalogowaniu się, podając w pełni kwalifikowany adres URL w parametrze post_login_redirect_uri ciągu zapytania, jak w poniższym przykładzie.

<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 configure this behavior, 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

Możesz ograniczyć korzystanie z aplikacji przy użyciu dostawcy uwierzytelniania, ponieważ wszyscy dostawcy uwierzytelniania są włączeni. Na przykład aplikacja może chcieć standandaryzować tylko dostawców , którzy uwidaczniają adresy e-mail.

Aby zablokować dostawcę, możesz utworzyć reguły tras, aby zwrócić kod stanu 404 dla żądań do zablokowanej trasy specyficznej dla dostawcy. Aby na przykład ograniczyć usługę Twitter jako dostawcę, dodaj następującą regułę trasy.

{
  "route": "/.auth/login/twitter",
  "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