Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dostawca uwierzytelniania symulatora umożliwia lokalne testowanie uprawnień opartych na rolach bez konfigurowania dostawcy tożsamości. Użyj go podczas programowania, aby sprawdzić, czy reguły uprawnień działają poprawnie przed wdrożeniem w środowisku produkcyjnym.
Wybieranie lokalnego dostawcy uwierzytelniania
Podczas programowania można przetestować uwierzytelnianie i autoryzację bez konfigurowania produkcyjnego dostawcy tożsamości.
| Provider | Najlepsze dla | Notatki |
|---|---|---|
| Symulator | Szybkie testowanie uprawnień | Tylko programowanie. Traktuje każde żądanie jako uwierzytelnione. Domyślnie do roli Authenticated; zastąpić za pomocą X-MS-API-ROLE. |
| AppService | Testowanie oparte na oświadczeniach | Symuluj uwierzytelnianie EasyAuth lokalnie, wysyłając X-MS-CLIENT-PRINCIPAL za pomocą oświadczeń niestandardowych. Aby uzyskać szczegółowe informacje, zobacz Konfigurowanie uwierzytelniania usługi App Service. |
Przepływ uwierzytelniania
Dostawca symulatora traktuje wszystkie żądania jako uwierzytelnione, co pozwala skoncentrować się na testowaniu reguł autoryzacji:
| Phase | Co się stanie |
|---|---|
| Żądanie dotarło | Deweloper wysyła żądanie HTTP do języka DAB |
| Przypisanie roli | DAB przypisuje Authenticated (ustawienie domyślne) lub rolę z nagłówka X-MS-API-ROLE |
| Sprawdzenie uprawnień | DAB ocenia żądanie na podstawie uprawnień podmiotu dla tej roli |
| Wykonywanie zapytań | Jeśli jest to dozwolone, usługa DAB wysyła zapytanie do bazy danych i zwraca wyniki |
Ważne
Dostawca symulatora jest przeznaczony tylko do programowania. Nigdy nie używaj go w środowisku produkcyjnym — pomija wszystkie rzeczywiste uwierzytelnianie.
Wymagania wstępne
- Zainstalowany interfejs wiersza polecenia konstruktora interfejsu API danych (przewodnik instalacji)
- Istniejąca
dab-config.jsonz co najmniej jedną encją
Krótki przewodnik
| Setting | Wartość |
|---|---|
| Provider | Simulator |
| Tryb hosta |
development (wymagane) |
| Rola domyślna |
Authenticated (wstrzykiwane automatycznie) |
| Nagłówek zastępowania roli | X-MS-API-ROLE |
| Wymagany token | Nie. |
| Obsługa oświadczeń | Ograniczone (tylko systemowe role Anonymous/Authenticated; bez dowolnych żądań) |
Krok 1. Konfigurowanie dostawcy symulatora
Ustaw dostawcę uwierzytelniania na Symulator i upewnij się, że tryb programowania jest włączony.
CLI
# Enable development mode
dab configure \
--runtime.host.mode development
# Set the Simulator provider
dab configure \
--runtime.host.authentication.provider Simulator
Konfiguracja wyniku
{
"runtime": {
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
}
}
Uwaga / Notatka
Dostawca symulatora działa tylko wtedy, gdy mode jest ustawiony na development. W trybie produkcyjnym DAB odrzuca dostawcę symulatora i nie uruchamia się.
Krok 2. Konfigurowanie uprawnień jednostki
Zdefiniuj uprawnienia dla ról, które chcesz przetestować. Role systemowe (Anonymous, Authenticated) i role niestandardowe można przetestować.
Przykład: wiele ról
# Allow anonymous read access
dab update Book \
--permissions "Anonymous:read"
# Allow authenticated users full read access
dab update Book \
--permissions "Authenticated:read"
# Allow authors to create and update
dab update Book \
--permissions "author:create,read,update"
# Allow admins full access
dab update Book \
--permissions "admin:*"
Konfiguracja wyniku
{
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Anonymous",
"actions": ["read"]
},
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "author",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}
Krok 3. Testowanie różnych ról
Uruchom konstruktora interfejsu API danych i wyślij żądania, aby przetestować każdą rolę.
dab start
Testowanie jako uwierzytelnione (ustawienie domyślne)
Bez specjalnych nagłówków, żądania są oceniane w ramach roli Authenticated.
curl -X GET "http://localhost:5000/api/Book"
Testowanie jako anonimowe
Użyj nagłówka X-MS-API-ROLE do testowania jako Anonymous:
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: Anonymous"
Testuj jako rola niestandardowa
Użyj nagłówka X-MS-API-ROLE, aby przetestować dowolną rolę niestandardową:
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: author"
Uwaga / Notatka
W Simulatorze niestandardowe testowanie ról działa, ponieważ DAB ocenia uprawnienia na podstawie wartości nagłówka X-MS-API-ROLE. Role systemowe (Anonymous, Authenticated) są zawsze dostępne. Jeśli żądanie roli niestandardowej zwraca wartość 403, sprawdź, czy nazwa roli jest dokładnie zgodna z uprawnieniami jednostki.
Testowanie akcji, która powinna zostać odrzucona
Spróbuj wykonać akcję, dla których rola nie ma uprawnień:
# This should fail—Anonymous can only read
curl -X POST "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: Anonymous" \
-H "Content-Type: application/json" \
-d '{"title": "New Book", "author": "Test"}'
Oczekiwana odpowiedź: 403 Forbidden
Testowanie scenariuszy
Użyj symulatora, aby przetestować te typowe scenariusze:
| Scenario | Jak przetestować |
|---|---|
| Dostęp anonimowy | Zbiór X-MS-API-ROLE: Anonymous |
| Uwierzytelniony dostęp | Pomijanie nagłówków (ustawienie domyślne) lub ustawienie X-MS-API-ROLE: Authenticated |
| Dostęp do roli niestandardowej | Zbiór X-MS-API-ROLE: <role-name> |
| Akcja odrzucona | Zażądaj działania, którego rola nie ma uprawnień. |
| Ograniczenia pól | Konfigurowanie uprawnień na poziomie pola i weryfikowanie pól odpowiedzi |
| Brak roli | Ustaw X-MS-API-ROLE: nonexistent do testowania obsługi błędów |
Ograniczenia
Dostawca symulatora ma następujące ograniczenia:
| Limitation | Rozwiązanie |
|---|---|
| Brak roszczeń niestandardowych | Używanie dostawcy usługi AppService z nagłówkiem X-MS-CLIENT-PRINCIPAL |
| Brak zasad bazy danych z oświadczeniami | Testowanie zasad przy użyciu dostawcy usługi AppService |
| Brak weryfikacji tokenu | Przełącz na Entra lub niestandardowego dostawcę dla środowiska produkcyjnego |
| Tylko tryb programowania | Używanie rzeczywistego dostawcy w środowisku produkcyjnym |
Wskazówka
Jeśli musisz przetestować zasady bazy danych korzystające z oświadczeń (takich jak @claims.userId), użyj dostawcy AppService. Umożliwia udostępnianie oświadczeń niestandardowych za pośrednictwem nagłówka X-MS-CLIENT-PRINCIPAL .
Przejście do środowiska produkcyjnego
Gdy wszystko będzie gotowe do wdrożenia, zastąp dostawcę symulatora dostawcą produkcyjnym:
- Zmień
modezdevelopmentnaproduction - Zmień
providerzSimulatorna wybranego dostawcę (EntraID, /,AzureAD,AppServicelubCustom) - Konfigurowanie wymaganych ustawień JWT (odbiorców, wystawcy)
{
"runtime": {
"host": {
"mode": "production",
"authentication": {
"provider": "EntraID",
"jwt": {
"audience": "api://<your-app-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
}
Kompletny przykład konfiguracji
{
"$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
"data-source": {
"database-type": "mssql",
"connection-string": "Server=localhost;Database=Library;Trusted_Connection=true;TrustServerCertificate=true;"
},
"runtime": {
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
},
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Anonymous",
"actions": ["read"]
},
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "author",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}