Konfigurace přístupu pro poskytovatele a role

Dokončeno

Při ověřování uživatelů potřebuje webová aplikace nákupního seznamu způsob, jak omezit přístup k některým stránkám pro uživatele, kteří nejsou přihlášení, a povolit přihlášení jenom prostřednictvím konkrétních poskytovatelů.

Podíváme se na konfiguraci směrování a role ve službě Azure Static Web Apps, abychom vyladili přístup uživatelů k naší webové aplikaci.

Konfigurační soubor pro Azure Static Web Apps

Konfigurace pro Azure Static Web Apps je definována staticwebapp.config.json v souboru, který řídí následující nastavení:

  • Směrování
  • Authentication
  • Autorizace
  • Náhradní pravidla
  • Přepsání odpovědí HTTP
  • Globální definice hlaviček HTTP
  • Vlastní typy MIME

Doporučené umístění je staticwebapp.config.json ve složce nastavené jako app_location nastavení, které jsme zvolili během nasazení. Soubor se ale může umístit do libovolného umístění ve složce zdrojového kódu vaší aplikace.

V našem případě použití se podíváme na konfiguraci směrování, abychom dosáhli toho, co chceme.

Omezení zprostředkovatelů ověřování

V předchozí části jsme viděli, že ve výchozím nastavení jsou všichni zprostředkovatelé ověřování povoleni. To můžeme změnit přidáním pravidel směrování do konfigurace.

Pokud například chcete zakázat přihlášení prostřednictvím poskytovatele GitHubu, můžete do souboru přidat pravidlo směrování, jako je staticwebapp.config.json toto.

{
  "routes": [
    {
      "route": "/.auth/login/github",
      "statusCode": 404
    }
  ]
}

Trasu /.auth/login/github použitou k ověření u poskytovatele GitHubu vynutíme, aby vrátila 404 (nenalezena) chybu, aby k ní uživatelé nemohli získat přístup. Můžete přidat tolik pravidel tras, která chceme zakázat všem poskytovatelům, které nechcete používat.

Zabezpečení tras pomocí rolí

Trasy jsou ve výchozím nastavení přístupné všem bez jakýchkoli omezení. Trasy můžete zabezpečit přidáním jednoho nebo více názvů rolí do pole pravidla allowedRoles . Ve výchozím nastavení patří každý uživatel k předdefinované anonymous roli a všichni přihlášení uživatelé jsou členy authenticated této role.

To znamená, že chcete omezit trasu jenom na ověřené uživatele, můžete do allowedRoles pole přidat předdefinovanou authenticated roli.

{
  "routes": [
    {
      "route": "/profile",
      "allowedRoles": ["authenticated"]
    }
  ]
}

Pokud se v této konfiguraci pokusí neověřený uživatel získat přístup /profile k trase, vrátí se chyba 401 (neautorizováno).

Můžete také omezit konkrétní metody HTTP pro danou trasu, například následující:

{
  "routes": [
    {
      "route": "/profile",
      "methods": ["PUT", "POST", "DELETE"],
      "allowedRoles": ["authenticated"]
    }
  ]
}

V tomto příkladu GET mají všichni uživatelé přístup k metodě na /profile trase, ale pouze ověření uživatelé mohou používat PUT, POST nebo DELETE.

Použití zástupné kóty

Pomocí zástupného znaku na konci trasy můžete odpovídat všem trasám, které následují za základním vzorem. Pokud například chcete omezit všechny adresy URL začínající /api na ověřené uživatele, můžete napsat:

{
  "routes": [
    {
      "route": "/api/*",
      "allowedRoles": ["authenticated"]
    }
  ]
}

Další kroky

V dalším kroku implementujeme omezení přístupu v naší aplikaci.