Udostępnij za pośrednictwem


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 Authenticatedsystemu .
  • 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 Authenticatedsystemowej:

curl --request GET \
  --url http://localhost:5000/api/books \

Aby ustawić kontekst roli na dowolną inną rolę, w tym rolę AnonymousX-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-PRINCIPALponieważ ś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'