Zarządzanie uwierzytelnianiem w usłudze Static Web Apps

Ukończone

Aplikacja internetowa listy zakupów wymaga sposobu unikatowego identyfikowania użytkowników i udostępniania im osobistego miejsca do przechowywania produktów.

Uwierzytelnianie to sposób weryfikacji tożsamości użytkownika, który próbuje uzyskać dostęp do systemu informacyjnego. Teraz przyjrzymy się uwierzytelnianiu i sposobom jej implementacji w usłudze Azure Static Web Apps.

Dostawcy tożsamości

Usługa Azure Static Web Apps usprawnia uwierzytelnianie, zarządzając uwierzytelnianiem przy użyciu następujących dostawców:

  • Microsoft Entra ID
  • GitHub
  • X

Wszyscy dostawcy uwierzytelniania są domyślnie włączeni. Później zobaczymy, jak można ograniczyć dostawcę uwierzytelniania za pomocą niestandardowej reguły trasy.

Folder systemowy

Folder /.auth systemowy zapewnia dostęp do wszystkich interfejsów API związanych z uwierzytelnianiem. Tych punktów końcowych można użyć do zaimplementowania pełnego przepływu pracy uwierzytelniania w aplikacji, w tym logowania i wylogowywania się oraz uzyskiwania dostępu do informacji o użytkowniku.

Zaloguj się

W poniższej tabeli wymieniono trasę logowania specyficzną dla dostawcy, której można użyć w aplikacji.

Dostawca tożsamości Trasa logowania
Microsoft Entra ID /.auth/login/aad
GitHub /.auth/login/github
X /.auth/login/x

Aby na przykład zalogować się za pomocą usługi GitHub, możesz dołączyć link logowania do aplikacji internetowej przy użyciu następującego fragmentu kodu:

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

Jeśli chcesz, aby użytkownik wrócił do określonej strony po zalogowaniu, możesz również podać adres URL w post_login_redirect_uri parametrze ciągu zapytania. Na przykład:

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

Wyloguj

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

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

Podobnie jak w przypadku logowania, możesz podać adres URL do przekierowania do po wylogowaniu przy użyciu parametru post_logout_redirect_uri ciągu zapytania:

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

Uzyskiwanie dostępu do informacji o użytkownikach

Dostęp do informacji użytkownika związanych z uwierzytelnianiem można uzyskać za pośrednictwem punktu końcowego dostępu bezpośredniego lub specjalnego nagłówka w funkcjach interfejsu API.

Jeśli wyślesz GET żądanie do /.auth/me trasy, otrzymasz obiekt JSON z danymi dla aktualnie zalogowanego użytkownika. Żądania nieuwierzytelnionych użytkowników zwracają wartość null.

Poniższy przykład to przykładowy obiekt odpowiedzi.

{
  "identityProvider": "github",
  "userId": "d75b260a64504067bfc5b2905e3b8182",
  "userDetails": "github-user-example",
  "userRoles": [ "anonymous", "authenticated" ]
}

Funkcje interfejsu API

Wszystkie funkcje interfejsu API dostępne w usłudze Azure Static Web Apps mają dostęp do tych samych informacji o użytkowniku co aplikacja kliencka. Dane użytkownika są przekazywane do funkcji w nagłówku x-ms-client-principal HTTP. Dane są serializowane jako obiekt JSON i zakodowane w formacie Base64.

Poniższa przykładowa funkcja pokazuje, jak odczytywać i zwracać informacje o użytkowniku.

module.exports = async function (context, req) {
  const header = req.headers["x-ms-client-principal"];
  const encoded = Buffer.from(header, "base64");
  const decoded = encoded.toString("ascii");

  context.res = {
    body: {
      userInfo: JSON.parse(decoded)
    }
  };
};

Następne kroki

Następnie zaimplementujemy kompletny przepływ pracy uwierzytelniania w naszej aplikacji.

Sprawdź swoją wiedzę

1.

Jakiego wzorca trasy należy użyć do utworzenia żądania uwierzytelniania?