Uwierzytelnianie lokalne w narzędziu Data API Builder
Podczas tworzenia rozwiązania przy użyciu konstruktora interfejsu API danych lokalnie lub podczas uruchamiania lokalnego konstruktora interfejsu API danych należy przetestować skonfigurowane opcje uwierzytelniania i autoryzacji, symulując żądanie z określoną rolą lub oświadczeniem.
Aby zasymulować uwierzytelnione żądanie bez konfigurowania dostawcy uwierzytelniania (na przykład Tożsamość Microsoft Entra), możesz użyć Simulator
dostawców uwierzytelniania lub StaticWebApps
:
Korzystanie z dostawcy Simulator
Simulator
to konfigurowalny dostawca uwierzytelniania, który nakazuje aparatowi konstruktora interfejsu API danych traktowanie wszystkich żądań jako uwierzytelnionych.
- Co najmniej wszystkie żądania są oceniane w kontekście roli
Authenticated
systemu . - W razie potrzeby żądanie jest oceniane w kontekście dowolnej roli oznaczonej w nagłówku
X-MS-API-ROLE
Http.
Uwaga
Chociaż żądana rola zostanie uhonorowana, uprawnienia autoryzacji definiujące zasady bazy danych nie będą działać, ponieważ nie można ustawić oświadczeń niestandardowych dla uwierzytelnionego użytkownika u dostawcy Simulator
. Przejdź do sekcji Używanie dostawcy do testowania StaticWebApps
zasad autoryzacji bazy danych.
1. Aktualizowanie dostawcy uwierzytelniania konfiguracji środowiska uruchomieniowego
Upewnij się, że w pliku konfiguracji jest Simulator
określony dostawca uwierzytelniania i development
tryb. Zapoznaj się z tą przykładową host
sekcją konfiguracji:
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
2. Określ kontekst roli żądania
W Simulator
przypadku dostawcy uwierzytelniania konstruktora interfejsu API danych żaden nagłówek niestandardowy nie jest niezbędny do ustawienia kontekstu roli Authenticated
systemowej:
curl --request GET \
--url http://localhost:5000/api/books \
Aby ustawić kontekst roli na dowolną inną rolę, w tym rolę Anonymous
X-MS-API-ROLE
system, nagłówek musi być dołączony do żądanej roli:
curl --request GET \
--url http://localhost:5000/api/books \
--header 'X-MS-API-ROLE: author' \
Korzystanie z dostawcy StaticWebApps
Dostawca StaticWebApps
uwierzytelniania instruuje konstruktora interfejsu API danych, aby szukał zestawu nagłówków HTTP obecnych tylko podczas uruchamiania w środowisku Static Web Apps. Klient ustawia te nagłówki HTTP podczas uruchamiania lokalnego w celu symulowania uwierzytelnionego użytkownika, w tym wszelkich członkostw w roli lub oświadczeń niestandardowych.
Uwaga
Klient dostarczył wystąpienia nagłówka Http , będzie działać tylko podczas opracowywania lokalnie, X-MS-CLIENT-PRINCIPAL
ponieważ środowiska produkcyjne Azure Static Web Apps porzucają wszystkie wystąpienia podane przez klienta tego nagłówka.
Upewnij się, że w pliku konfiguracji używasz dostawcy StaticWebApps
uwierzytelniania. Zapoznaj się z tą przykładową host
sekcją konfiguracji:
"host": {
"mode": "development",
"authentication": {
"provider": "StaticWebApps"
}
}
1. Wysyłanie żądań dostarczających wygenerowany X-MS-CLIENT-PRINCIPAL
nagłówek
Gdy konstruktor interfejsu API danych jest uruchomiony lokalnie i skonfigurowany do korzystania z StaticWebApps
dostawcy uwierzytelniania, można wygenerować obiekt podmiotu zabezpieczeń klienta ręcznie przy użyciu następującego szablonu:
{
"identityProvider": "test",
"userId": "12345",
"userDetails": "john@contoso.com",
"userRoles": ["author", "editor"]
}
Uwierzytelnione metadane użytkownika aplikacji statycznej aplikacji internetowej mają następujące właściwości:
Właściwość | Opis |
---|---|
identityProvider | Dowolna wartość ciągu. |
userId | Unikatowy identyfikator użytkownika. |
userDetails | Nazwa użytkownika lub adres e-mail użytkownika. |
userRoles | Tablica ról przypisanych przez użytkownika. |
Uwaga
Jak wspomniano w Static Web Apps dokumentacji, X-MS-CLIENT-PRINCIPAL
nagłówek nie zawiera tablicyclaims
.
Aby można było przekazać go z nagłówkiem X-MS-CLIENT-PRINCIPAL
, ładunek JSON musi być zakodowany w formacie Base64. W tym celu możesz użyć dowolnego narzędzia online lub offline. Jednym z takich narzędzi jest DevToys. Przykładowy ładunek zakodowany w formacie Base64 reprezentujący wcześniej przywołany kod JSON:
eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9
Następujące żądanie cURL symuluje uwierzytelnionego użytkownika, który pobiera listę dostępnych Book
rekordów jednostek w kontekście author
roli:
curl --request GET \
--url http://localhost:5000/api/books \
--header 'X-MS-API-ROLE: author' \
--header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'