Udostępnij przez


Konfigurowanie uwierzytelniania symulatora na potrzeby testowania lokalnego

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:

Ilustracja przepływu uwierzytelniania symulatora przedstawiająca sposób automatycznego traktowania żądań jako uwierzytelnionych.

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.json z 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:

  1. Zmień mode z development na production
  2. Zmień provider z Simulator na wybranego dostawcę (EntraID, /, AzureAD, AppService lub Custom)
  3. 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": ["*"]
        }
      ]
    }
  }
}