Konfigurowanie dostępu dla dostawców i ról
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 PUT
lub POST
DELETE
.
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.