Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
| 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:
-
modeöğesinidevelopmentolarakproductionile değiştir -
provideröğesiniSimulatoröğesinden seçtiğiniz sağlayıcıya değiştirin (EntraID/AzureAD,AppService, veyaCustom) - 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": ["*"]
}
]
}
}
}