Aracılığıyla paylaş


Yerel test için Simülatör kimlik doğrulamasını yapılandırma

Simülatör kimlik doğrulama sağlayıcısı, kimlik sağlayıcısı yapılandırmadan rol tabanlı izinleri yerel olarak test etmenizi sağlar. Üretime dağıtmadan önce izin kurallarınızın düzgün çalıştığını doğrulamak için geliştirme sırasında kullanın.

Yerel kimlik doğrulama sağlayıcısı seçme

Geliştirme sırasında, bir üretim kimliği sağlayıcısı yapılandırmadan kimlik doğrulamasını ve yetkilendirmeyi test edebilirsiniz.

Provider En iyi kullanım alanı: Notes
Simülatör Hızlı izin testi Yalnızca geliştirme amaçlı. Her isteği kimliği doğrulanmış olarak kabul eder. Varsayılan olarak Authenticated rolünü kullanır; X-MS-API-ROLE ile geçersiz kılabilirsiniz.
AppService Talep temelli test Özel taleplerle X-MS-CLIENT-PRINCIPAL göndererek yerel olarak EasyAuth'u simüle edin. Ayrıntılar için bkz. App Service kimlik doğrulamasını yapılandırma.

Kimlik doğrulama akışı

Simülatör sağlayıcısı tüm istekleri kimliği doğrulanmış olarak kabul eder ve yetkilendirme kurallarını test etme konusunda odaklanmanızı sağlar:

İsteklerin otomatik olarak kimliği doğrulanmış olarak nasıl ele alınıldığını gösteren Simülatör kimlik doğrulama akışının çizimi.

Phase Ne olur?
İstek geliyor Geliştirici DAB'ye HTTP isteği gönderiyor
Rol ataması DAB, Authenticated (varsayılan) veya X-MS-API-ROLE başlık rolü atar.
İzin denetimi DAB, isteği ilgili rol için varlığın izinlerine göre değerlendirir
Sorgu yürütme İzin verilirse DAB veritabanını sorgular ve sonuçları döndürür

Önemli

Simülatör sağlayıcısı yalnızca geliştirme içindir. Üretimde asla kullanmayın; tüm gerçek kimlik doğrulamasını atlar.

Önkoşullar

  • Data API builder CLI yüklü (yükleme kılavuzu)
  • En az bir varlığa sahip mevcut dab-config.json

Hızlı referans

Setting Değer
Provider Simulator
Konak modu development (gerekli)
Varsayılan rol Authenticated (otomatik olarak eklenen)
Rol geçersiz kılma başlığı X-MS-API-ROLE
Belirteç gerekli Hayı
Talep desteği Sınırlı (sadece sistem rolleri Anonymous/Authenticated; keyfi talepler yok)

1. Adım: Simülatör sağlayıcısını yapılandırma

Kimlik doğrulama sağlayıcısını Simülatör olarak ayarlayın ve geliştirme modunun etkinleştirildiğinden emin olun.

CLI

# Enable development mode
dab configure \
  --runtime.host.mode development

# Set the Simulator provider
dab configure \
  --runtime.host.authentication.provider Simulator

Sonuçta elde edilen yapılandırma

{
  "runtime": {
    "host": {
      "mode": "development",
      "authentication": {
        "provider": "Simulator"
      }
    }
  }
}

Uyarı

Simülatör sağlayıcısı, yalnızca modedevelopment olarak ayarlandığında çalışır. Üretim modunda DAB, Simülatör sağlayıcısını reddeder ve başlatılamaz.

2. Adım: Varlık izinlerini yapılandırma

Test etmek istediğiniz roller için izinleri tanımlayın. Sistem rollerini (Anonymous, Authenticated) ve özel rolleri test edebilirsiniz.

Örnek: Birden çok rol

# 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:*"

Sonuçta elde edilen yapılandırma

{
  "entities": {
    "Book": {
      "source": "dbo.Books",
      "permissions": [
        {
          "role": "Anonymous",
          "actions": ["read"]
        },
        {
          "role": "Authenticated",
          "actions": ["read"]
        },
        {
          "role": "author",
          "actions": ["create", "read", "update"]
        },
        {
          "role": "admin",
          "actions": ["*"]
        }
      ]
    }
  }
}

3. Adım: Farklı rolleri test edin

Veri API oluşturucusu'nu başlatın ve her rolü test etmek için istekler gönderin.

dab start

Kimliği doğrulanmış olarak test et (varsayılan)

Özel üst bilgiler olmadan, istekler Authenticated rolüne göre değerlendirilir.

curl -X GET "http://localhost:5000/api/Book"

Anonim olarak test et

X-MS-API-ROLE olarak Anonymoustest etmek için üst bilgiyi kullanın:

curl -X GET "http://localhost:5000/api/Book" \
  -H "X-MS-API-ROLE: Anonymous"

Özel rol olarak test et

Herhangi bir özel rolü test etmek için X-MS-API-ROLE header'ını kullanın.

curl -X GET "http://localhost:5000/api/Book" \
  -H "X-MS-API-ROLE: author"

Uyarı

DAB, izinleri üst bilgi değerine göre X-MS-API-ROLE değerlendirdiği için Simulator ile özel rol testi çalışır. Sistem rolleri (Anonymous, Authenticated) her zaman kullanılabilir. Özel rol isteği 403 döndürürse rol adının varlık izinlerinizle tam olarak eşleşip eşleşmediğini doğrulayın.

Reddedilmesi gereken bir eylemi test edin

Rolün izni olmayan bir eylemi deneyin:

# 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"}'

Beklenen yanıt: 403 Forbidden

Test senaryoları

Bu yaygın senaryoları test etmek için Simülatörü kullanın:

Scenario Test etme
Anonim erişim Ayarla X-MS-API-ROLE: Anonymous
Kimliği doğrulanmış erişim Üst bilgileri atla (varsayılan) veya X-MS-API-ROLE: Authenticated ayarla
Özel rol erişimi Ayarla X-MS-API-ROLE: <role-name>
Eylem reddedildi Rolün izinsiz olduğu bir eylem isteme
Alan kısıtlamaları Alan düzeyinde izinleri yapılandırma ve yanıt alanlarını doğrulama
Eksik rol Hata işlemeyi test etmek için ayarlayın X-MS-API-ROLE: nonexistent

Sınırlamalar

Simülatör sağlayıcısının şu sınırlamaları vardır:

Sınırlama Geçici çözüm
Özel talep yok AppService sağlayıcısını X-MS-CLIENT-PRINCIPAL başlığı ile kullanma
Talep içeren veritabanı politikası yok. AppService sağlayıcısını kullanarak ilkeleri test etme
Token doğrulaması yapılmıyor Üretim için Entra veya Özel sağlayıcıya geçme
Yalnızca geliştirme modu Üretimde gerçek bir sağlayıcı kullanma

Tip

Talep (gibi @claims.userId) kullanan veritabanı ilkelerini test etmeniz gerekiyorsa, bunun yerine AppService sağlayıcısını kullanın. Özel iddialar sağlamanızı X-MS-CLIENT-PRINCIPAL üst bilgi başlığı üzerinden sağlar.

Üretime geçiş

Dağıtıma hazır olduğunuzda Simulator sağlayıcısını bir üretim sağlayıcısıyla değiştirin:

  1. mode öğesini development olarak production ile değiştir
  2. provider öğesini Simulator öğesinden seçtiğiniz sağlayıcıya değiştirin (EntraID/AzureAD, AppService, veya Custom)
  3. Gerekli JWT ayarlarını yapılandırma (hedef kitle, veren)
{
  "runtime": {
    "host": {
      "mode": "production",
      "authentication": {
        "provider": "EntraID",
        "jwt": {
          "audience": "api://<your-app-id>",
          "issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
        }
      }
    }
  }
}

Yapılandırmayı tamamlama örneği

{
  "$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": ["*"]
        }
      ]
    }
  }
}