Konfigurowanie dostępu dla dostawców i ról

Ukończone

W przypadku uwierzytelniania użytkowników aplikacja internetowa listy zakupów wymaga sposobu ograniczenia dostępu do niektórych stron dla użytkowników, którzy nie są zalogowani, i zezwalać na logowanie tylko za pośrednictwem określonych dostawców.

Przyjrzymy się konfiguracji routingu i ról w usłudze Azure Static Web Apps, aby dostosować dostęp użytkowników do naszej aplikacji internetowej.

Plik konfiguracji dla usługi Azure Static Web Apps

Konfiguracja usługi Azure Static Web Apps jest zdefiniowana w staticwebapp.config.json pliku, który kontroluje następujące ustawienia:

  • Routing
  • Authentication
  • Autoryzacja
  • Reguły rezerwowe
  • Przesłonięcia odpowiedzi HTTP
  • Globalne definicje nagłówków HTTP
  • Niestandardowe typy MIME

Zalecana lokalizacja elementu staticwebapp.config.json znajduje się w folderze ustawionym app_location jako ustawienie wybrane podczas wdrażania. Plik można jednak umieścić w dowolnej lokalizacji w folderze kodu źródłowego aplikacji.

W naszym przypadku użycia przyjrzymy się konfiguracji routingu, aby osiągnąć to, czego chcemy.

Ograniczanie dostawców uwierzytelniania

W poprzedniej sekcji zobaczyliśmy, że domyślnie wszyscy dostawcy uwierzytelniania są włączeni. Możemy to zmienić, dodając reguły routingu w konfiguracji.

Aby na przykład wyłączyć logowanie za pośrednictwem dostawcy usługi GitHub, możesz dodać regułę routingu podobną do staticwebapp.config.json tej w pliku.

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

Wymuszamy, aby trasa /.auth/login/github używana do uwierzytelniania za pomocą dostawcy usługi GitHub zwróciła 404 błąd (nie znaleziono), aby użytkownicy nie mogli uzyskać do niej dostępu. Możesz dodać dowolną liczbę reguł tras, których chcemy wyłączyć wszystkich dostawców, których nie chcesz używać.

Zabezpieczanie tras przy użyciu ról

Trasy są domyślnie dostępne dla wszystkich bez żadnych ograniczeń. Trasy można zabezpieczyć, dodając co najmniej jedną nazwę ról do tablicy allowedRoles reguły. Domyślnie każdy użytkownik należy do wbudowanej anonymous roli, a wszyscy zalogowani użytkownicy są członkami authenticated roli.

Oznacza to, że aby ograniczyć trasę tylko do uwierzytelnionych użytkowników, możesz dodać wbudowaną authenticated rolę do tablicy allowedRoles .

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

W przypadku tej konfiguracji, jeśli nieuwierzytelniony użytkownik spróbuje uzyskać dostęp /profile do trasy, zostanie zwrócony błąd 401 (nieautoryzowany).

Można również ograniczyć określone metody HTTP dla danej trasy, takie jak:

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

W tym przykładzie wszyscy użytkownicy mogą uzyskać dostęp do GET metody na /profile trasie, ale tylko uwierzytelnieni użytkownicy mogą używać metody PUTlub POSTDELETE.

Używanie symbolu wieloznakowego

Na końcu trasy można użyć symbolu wieloznakowego, aby dopasować wszystkie trasy zgodnie ze wzorcem podstawowym. Aby na przykład ograniczyć wszystkie adresy URL, począwszy od /api uwierzytelnionych użytkowników, możesz napisać:

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

Następne kroki

Następnie zaimplementujemy ograniczenia dostępu w naszej aplikacji.