Správa ověřování ve statických webových aplikacích

Dokončeno

Webová aplikace nákupního seznamu potřebuje způsob, jak jedinečně identifikovat uživatele a poskytnout jim osobní prostor pro ukládání produktů.

Ověřování je způsob, jakým ověříte identitu uživatele, který se pokouší získat přístup k informačnímu systému. Teď se podíváme na ověřování a na to, jak ho můžete implementovat ve službě Azure Static Web Apps.

Zprostředkovatelé identit

Azure Static Web Apps zjednodušuje ověřování tím, že spravuje ověřování s následujícími poskytovateli:

  • Microsoft Entra ID
  • GitHub
  • X

Všichni zprostředkovatelé ověřování jsou ve výchozím nastavení povoleni. Později se dozvíme, jak můžete omezit zprostředkovatele ověřování pomocí vlastního pravidla směrování.

Systémová složka

Systémová /.auth složka poskytuje přístup ke všem rozhraním API souvisejícím s ověřováním. Tyto koncové body můžete použít k implementaci úplného pracovního postupu ověřování ve vaší aplikaci, včetně přihlášení a odhlášení a přístupu k informacím o uživatelích.

Přihlásit

Následující tabulka uvádí trasu přihlášení specifickou pro poskytovatele, kterou můžete použít ve své aplikaci.

Zprostředkovatel identity Trasa přihlášení
Microsoft Entra ID /.auth/login/aad
GitHub /.auth/login/github
X /.auth/login/x

Pokud se například chcete přihlásit pomocí GitHubu, můžete do webové aplikace zahrnout přihlašovací odkaz s následujícím fragmentem kódu:

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

Pokud chcete, aby se uživatel po přihlášení vrátil na konkrétní stránku, můžete také zadat adresu URL v post_login_redirect_uri parametru řetězce dotazu. Příklad:

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

Odhlášení

Trasa /.auth/logout odhlásí uživatele z webové aplikace. Můžete přidat odkaz na navigaci na webu, aby se uživatel mohl odhlásit, jak je znázorněno v následujícím příkladu.

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

Podobně jako u přihlášení můžete zadat adresu URL pro přesměrování po odhlášení pomocí parametru post_logout_redirect_uri řetězce dotazu:

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

Přístup k informacím o uživateli

K informacím o uživateli souvisejícím s ověřováním můžete získat přístup prostřednictvím koncového bodu přímého přístupu nebo speciální hlavičky ve funkcích rozhraní API.

Pokud odešlete GET požadavek na trasu /.auth/me , obdržíte objekt JSON s daty aktuálně přihlášeného uživatele. Požadavky od neověřených uživatelů vrátí null.

Následující příklad je příkladem objektu odpovědi.

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

Funkce rozhraní API

Všechny funkce rozhraní API dostupné ve službě Azure Static Web Apps mají přístup ke stejným informacím o uživatelích jako vaše klientská aplikace. Uživatelská data se předávají funkcím x-ms-client-principal v hlavičce HTTP. Data se serializují jako objekt JSON a kódují se v Base64.

Následující ukázková funkce ukazuje, jak číst a vracet informace o uživateli.

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)
    }
  };
};

Další kroky

V dalším kroku implementujeme v naší aplikaci úplný pracovní postup ověřování.