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.
Çalışma zamanı davranışını belirleyen yapılandırma ayarları.
Sayfalandırma ayarları
| Property | Default | Description |
|---|---|---|
| sayfa boyutu runtime.pagination.max | Sayfa başına en fazla kaydı tanımlar | |
| runtime.pagination.default-page-size | Yanıt başına varsayılan kayıtları ayarlar |
REST ayarları
| Property | Default | Description |
|---|---|---|
| runtime.rest.path | "/api" |
REST uç noktaları için temel yol |
| runtime.rest.enabled | true |
Tüm varlıklar için REST isteklerinin etkinleştirilmesine veya devre dışı bırakılmasına izin verir |
| runtime.rest.request-body-strict | true |
Doğru olduğunda istek gövdesindeki fazlalık alanlara izin verme |
GraphQL ayarları
| Property | Default | Description |
|---|---|---|
| runtime.graphql.allow-introspection | true |
Temel alınan GraphQL şemasının sorgulanmasına izin verir |
| runtime.graphql.path | "/graphql" |
GraphQL uç noktası için temel yol |
| runtime.graphql.enabled | true |
Tüm varlıklar için GraphQL isteklerini etkinleştirmeye veya devre dışı bırakmaya izin verir |
| runtime.graphql.depth-limit | null |
GraphQL sorgusunun izin verilen en fazla derinliği |
| runtime.graphql.multiple-mutations.create.enabled | false |
Tüm varlıklar için birden çok mutasyon oluşturmasına izin verir |
Konak ayarları
| Property | Default | Description |
|---|---|---|
| runtime.host.max-response-size-mb | 158 |
Tek bir sonuçta izin verilen en büyük veritabanı yanıtı boyutu (MB) |
| runtime.host.mode | "production" |
Çalıştırma modu; "production" veya "development" |
CORS ayarları
| Property | Default | Description |
|---|---|---|
| runtime.host.cors.origins | [] |
İzin verilen CORS kaynakları |
| runtime.host.cors.allow-credentials | false |
Access-Control-Allow-Credentials üst bilgisi için değeri ayarlar |
Kimlik doğrulama ayarları
| Property | Default | Description |
|---|---|---|
| runtime.host.authentication.provider | null |
Kimlik doğrulama sağlayıcısı |
| runtime.host.authentication.jwt.audience | null |
JWT hedef kitlesi |
| runtime.host.authentication.jwt.issuer | null |
JWT veren |
Önbellek ayarları
| Property | Default | Description |
|---|---|---|
| runtime.cache.enabled | false |
Yanıtların genel olarak önbelleğe alınmasını sağlar |
| runtime.cache.ttl-seconds | 5 |
Genel önbellek için yaşam süresi (saniye) |
Telemetri ayarları
| Property | Default | Description |
|---|---|---|
| runtime.telemetry.application-insights.connection-string | null |
Application Insights bağlantı dizesi |
| runtime.telemetry.application-insights.enabled | false |
Application Insights telemetrisini etkinleştirir veya devre dışı bırakır |
| runtime.telemetry.open-telemetry.endpoint | null |
OpenTelemetry toplayıcı URL'si |
| runtime.telemetry.open-telemetry.headers | {} |
OpenTelemetry dışarı aktarma üst bilgileri |
| runtime.telemetry.open-telemetry.service-name | "dab" |
OpenTelemetry hizmet adı |
| runtime.telemetry.open-telemetry.exporter-protocol | "grpc" |
OpenTelemetry protokolü ("grpc" veya "httpprotobuf") |
| runtime.telemetry.open-telemetry.enabled | true |
OpenTelemetry'yi etkinleştirir veya devre dışı bırakır |
| runtime.telemetry.log-level.namespace | null |
Ad alanına özgü günlük düzeyi geçersiz kılma |
| runtime.health.enabled | true |
Genel olarak sistem durumu denetimi uç noktasını etkinleştirir veya devre dışı bırakır |
| runtime.health.roles | null |
Kapsamlı sistem durumu uç noktası için izin verilen roller |
| runtime.health.cache-ttl-seconds | 5 |
Sistem durumu denetimi raporu önbellek girdisi için yaşam süresi (saniye) |
| runtime.health.max-query-parallelism | 4 |
En fazla eşzamanlı sistem durumu denetimi sorgusu (aralık: 1-8) |
Biçime genel bakış
{
"runtime": {
"pagination": {
"max-page-size": <integer|null> (default: `100000`),
"default-page-size": <integer|null> (default: `100`)
},
"rest": {
"path": <string> (default: "/api"),
"enabled": <true>|<false>,
"request-body-strict": <true>|<false> (default: `true`)
},
"graphql": {
"path": <string> (default: "/graphql"),
"enabled": <true>|<false>,
"allow-introspection": <true>|<false>,
"depth-limit": <integer|null> (default: `null`),
"multiple-mutations": {
"create": {
"enabled": <true>|<false> (default: `false`)
}
}
},
"host": {
"mode": <"production"> (default) | <"development">,
"max-response-size-mb": <integer|null> (default: `158`),
"cors": {
"origins": [ "<string>" ],
"allow-credentials": <true>|<false> (default: `false`)
},
"authentication": {
"provider": <string> (default: "AppService"),
"jwt": {
"audience": "<string>",
"issuer": "<string>"
}
}
}
},
"cache": {
"enabled": <true>|<false> (default: `false`),
"ttl-seconds": <integer> (default: `5`)
},
"telemetry": {
"application-insights": {
"connection-string": "<string>",
"enabled": <true>|<false> (default: `true`)
},
"open-telemetry": {
"endpoint": "<string>",
"headers": "<string>",
"service-name": <string> (default: "dab"),
"exporter-protocol": <"grpc"> (default) | <"httpprotobuf">,
"enabled": <true>|<false> (default: `true`)
},
"log-level": {
// namespace keys
"<namespace>": <"trace"|"debug"|"information"|"warning"|"error"|"critical"|"none"|null>
}
},
"health": {
"enabled": <true>|<false> (default: `true`),
"roles": [ "<string>" ],
"cache-ttl-seconds": <integer> (default: `5`),
"max-query-parallelism": <integer> (default: `4`)
}
}
Mod (Konak çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
host |
sabit listesi (production | development) |
❌ Hayır | production |
Geliştirme davranışı
- GraphQL testi için Nitro (eski adıyla Banana Cake Pop) etkinleştirildi
- REST testi için etkinleştirilmiş Swagger kullanıcı arabirimi
- Anonim sistem durumu denetimleri etkinleştirildi
- Artan günlük ayrıntı düzeyi (Hata Ayıklama)
Format
{
"runtime": {
"host": {
"mode": "production" (default) | "development"
}
}
}
En büyük yanıt boyutu (Konak çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
max-response-size-mb |
integer | ❌ Hayır | 158 |
Herhangi bir sonuç için en büyük boyutu (megabayt cinsinden) ayarlar. Büyük yanıtlar sistemi zorlayabildiği için, max-response-size-mb özellikle metin veya JSON gibi büyük sütunlarda aşırı yüklemeyi önlemek için toplam boyutu (satır sayısı farklı) kaplar.
| Value | Result |
|---|---|
| ayarlanmadı | Varsayılanı kullan |
null |
Varsayılanı kullan |
integer |
Herhangi bir pozitif 32 bit tamsayı |
<= 0 |
Desteklenmiyor |
Format
{
"runtime": {
"host": {
"max-response-size-mb": <integer; default: 158>
}
}
}
GraphQL (çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
graphql |
object | ❌ Hayır | - |
Genel GraphQL yapılandırması.
İç içe özellikler
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.graphql |
enabled |
boolean | ❌ Hayır | None |
runtime.graphql |
path |
string | ❌ Hayır | "/graphql" |
runtime.graphql |
depth-limit |
integer | ❌ Hayır | Hiçbiri (sınırsız) |
runtime.graphql |
allow-introspection |
boolean | ❌ Hayır | True |
runtime.graphql |
multiple-mutations.create.enabled |
boolean | ❌ Hayır | False |
Özellik notları
- Özelliği için alt yollara
pathizin verilmez. - İç içe sorguları kısıtlamak için kullanın
depth-limit. -
allow-introspectionGraphQL şemasını gizlemek için olarak ayarlayınfalse. - Tek bir mutasyona birden fazla varlık eklemek için kullanın
multiple-mutations.
Format
{
"runtime": {
"graphql": {
"enabled": <true> (default) | <false>
"depth-limit": <integer|null> (default: `null`),
"path": <string> (default: /graphql),
"allow-introspection": <true> (default) | <false>,
"multiple-mutations": {
"create": {
"enabled": <true> (default) | <false>
}
}
}
}
Örnek: birden çok mutasyon
Configuration
{
"runtime": {
"graphql": {
"multiple-mutations": {
"create": {
"enabled": true
}
}
}
},
"entities": {
"User": {
"source": "dbo.Users",
"permissions": [
{
"role": "anonymous",
"actions": ["create"] // entity permissions are required
}
]
}
}
}
GraphQL mutasyonu
mutation {
createUsers(input: [
{ name: "Alice", age: 30, isAdmin: true },
{ name: "Bob", age: 25, isAdmin: false },
{ name: "Charlie", age: 35, isAdmin: true }
]) {
id
name
age
isAdmin
}
}
REST (çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
rest |
object | ❌ Hayır | - |
Genel REST yapılandırması.
İç içe özellikler
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.rest |
enabled |
boolean | ❌ Hayır | None |
runtime.rest |
path |
string | ❌ Hayır | "/api" |
runtime.rest |
request-body-strict |
boolean | ❌ Hayır | True |
Özellik notları
- Genel
enabledisefalse, tek tek varlık düzeyienabledönemli değildir. -
pathözelliği gibi/api/dataalt yol değerlerini desteklemez. -
request-body-strict.NET POCO nesnelerini basitleştirmeye yardımcı olmak için tanıtıldı.
request-body-strict |
Behavior |
|---|---|
true |
İstek gövdesindeki ek alanlar özel duruma BadRequest neden olur. |
false |
İstek gövdesindeki ek alanlar yoksayılır. |
Format
{
"runtime": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string> (default: /api),
"request-body-strict": <true> (default) | <false>
}
}
}
Note
Statik Web Apps (önizleme) kullanarak Veri API'si oluşturucusu dağıtılırken, Azure hizmeti url'ye otomatik olarak başka bir alt yol /data-api ekler. Bu davranış, mevcut Statik Web Uygulaması özellikleriyle uyumluluğu sağlar. Sonuçta elde edilen uç nokta /data-api/api/<entity>olacaktır. Bu not yalnızca Statik Web Uygulamaları ile ilgilidir.
Örnek: request-body-strict
- Değeri olan
default()sütunlar yalnızca yükündeki değerleri olduğunda yoksayılırINSERTnull. Sonuç olarak,INSERTolduğundadefault()request-body-strictsütunlara yapılantrueişlemler açıknulldeğerlere neden olamaz. Bunu gerçekleştirmek için birUPDATEişlem gereklidir. - yük değeri ne olursa olsun sütun içeren
default()sütunlar göz ardı edilirUPDATE. - Hesaplanan sütunlar her zaman yoksayılır.
- Otomatik oluşturulan sütunlar her zaman yoksayılır.
Örnek tablo
CREATE TABLE Users (
Id INT PRIMARY KEY IDENTITY, -- auto-generated column
Name NVARCHAR(50) NOT NULL,
Age INT DEFAULT 18, -- column with default
IsAdmin BIT DEFAULT 0, -- column with default
IsMinor AS IIF(Age <= 18, 1, 0) -- computed column
);
İstek veri yükü
{
"Id": 999,
"Name": "Alice",
"Age": null,
"IsAdmin": null,
"IsMinor": false,
"ExtraField": "ignored"
}
Ekleme davranışı request-body-strict = false
INSERT INTO Users (Name) VALUES ('Alice');
-- Default values for Age (18) and IsAdmin (0) are applied by the database.
-- IsMinor is ignored because it’s a computed column.
-- ExtraField is ignored.
-- The database generates the Id value.
Yanıt yükü
{
"Id": 1, // Auto-generated by the database
"Name": "Alice",
"Age": 18, // Default applied
"IsAdmin": false, // Default applied
"IsMinor": true // Computed
}
Güncelleştirme davranışı request-body-strict = false
UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.
Yanıt yükü
{
"Id": 1,
"Name": "Alice Updated",
"Age": null,
"IsAdmin": false,
"IsMinor": false // Recomputed by the database (false when age is `null`)
}
CORS (konak çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
cors |
object | ❌ Hayır | - |
Genel CORS yapılandırması.
Tip
CORS, "Çıkış Noktaları Arası Kaynak Paylaşımı" anlamına gelir. Bu, web sayfalarının kendilerine hizmet verenden farklı bir etki alanına istek gönderip gönderemeyeceğini denetleyebilen bir tarayıcı güvenlik özelliğidir.
İç içe özellikler
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.cors |
allow-credentials |
boolean | ❌ Hayır | False |
runtime.host.cors |
origins |
dize dizisi | ❌ Hayır | None |
Note
allow-credentials özelliği CORS üst bilgisini ayarlarAccess-Control-Allow-Credentials.
Format
{
"runtime": {
"host": {
"cors": {
"allow-credentials": <true> (default) | <false>,
"origins": ["<array-of-strings>"]
}
}
}
}
Note
Joker karakter * için originsbir değer olarak geçerlidir.
Sağlayıcı (Kimlik doğrulaması ana bilgisayar çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
provider |
sabit listesi (AppService | EntraId | Custom | Simulator) |
❌ Hayır | AppService |
Veri API oluşturucusu tarafından kullanılan kimlik doğrulama yöntemini tanımlar.
Yalnızca anonim (kimlik doğrulama sağlayıcısı)
{
"host": {
// omit the authentication section
}
}
bölümün tamamı authentication dab-config.json dosyasından atlandığında hiçbir kimlik doğrulama sağlayıcısı kullanılmaz. Bu durumda, Veri API oluşturucusu "kimlik doğrulaması yok" modunda çalışır. Bu modda DAB hiçbir belirteç veya Authorization üst bilgi aramaz. Üst X-MS-API-ROLE bilgi de bu yapılandırmada yoksayılır.
[! Not] Altyapıya gelen her istek otomatik olarak ve hemen sistem rolüne
anonymousatanır. Erişim denetimi daha sonra her varlıkta tanımladığınız izinler tarafından özel olarak işlenir.
Varlık izinlerine bir örnek.
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{
"role": "anonymous",
"actions": [ "read" ]
}
]
}
}
}
Bu örnekte, hiçbir authentication sağlayıcı yapılandırılmadığından, tüm gelen istekler otomatik olarak bir anonymous kullanıcıdan olduğu kabul edilir. Varlığın permissionsBook dizisi role açıkça işlem gerçekleştirme anonymous olanağı verirread. Başka eylemler gerçekleştirmeye (, , create) updatedeleteveya erişim için anonymous yapılandırılmamış diğer varlıklara erişmeye yönelik girişimler reddedilir.
StaticWebApps (kimlik doğrulama sağlayıcısı) [kullanım dışı]
{
"host": {
"authentication": {
"provider": "StaticWebApps"
}
}
}
Statik Web Uygulamaları önizleme özelliği Data Connections Kasım 2025'te kullanımdan kaldırıldığı için bu sağlayıcı kullanımdan kaldırıldı. İşlevselliğini korusa da Azure Static Web Apps'te eski bir kimlik doğrulaması uygulaması için tasarlanmıştır. Geliştiriciler, Azure'ın AppService daha geniş kapsamlı "Kolay Kimlik Doğrulama" platformuyla daha iyi uzun vadeli destek ve tutarlılık için sağlayıcıya geçiş yapmalıdır.
[! Not] Geçiş, yapılandırma dosyasındaki sağlayıcı adını değiştirmek kadar basit değildir.
StaticWebAppsveAppServicesağlayıcıları, rolleri işlemek için üst bilgi içindex-ms-client-principalfarklı JSON yapıları bekler.
AppService (kimlik doğrulama sağlayıcısı)
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
Bu sağlayıcı, Azure Container Apps gibi Azure App Service'te barındırılan uygulamalara yöneliktir. Azure barındırma ortamı kimlik doğrulamasını işler ve ardından istek üst bilgileri aracılığıyla kullanıcının kimlik bilgilerini uygulamaya geçirir. Azure platformu tarafından yönetilen, kullanıma hazır basit bir kimlik doğrulama çözümü isteyen geliştiricilere yöneliktir.
Bu sağlayıcı üst bilgiden Authorization bir JWT belirteci kullanmaz. App Service platformu tarafından eklenen özel bir üst bilgisine X-MS-CLIENT-PRINCIPALdayanır. Bu üst bilgi, kullanıcının kimlik ayrıntılarını içeren base64 kodlu bir JSON nesnesi içerir.
Anonim: Sağlayıcı yapılandırıldıysa AppService ancak üst bilgi olmadan X-MS-CLIENT-PRINCIPAL bir istek gelirse, istek sistem rolüne anonymousatanır.
Üst bilgiden X-MS-CLIENT-PRINCIPAL kodu çözülen JSON genellikle şöyle görünür:
{
"auth_typ": "aad",
"claims": [
{"typ": "roles", "val": "admin"},
{"typ": "roles", "val": "contributor"}
],
"name_typ": "...",
"role_typ": "..."
}
Roller dizi içinde claims yer alır.
X-MS-API-ROLE üst bilgisi hakkında
-
Rol ve Davranış: Üst
X-MS-API-ROLEbilgi, kullanıcının geçerli istek için hangi rolü varsaymak istediğini belirtmek için kullanılır. Bu üst bilginin değeri, nesnenin dizisindeclaimsX-MS-CLIENT-PRINCIPALbulunan rol değerlerinden biriyle eşleşmelidir. -
Gerekli mi?: Hayır.
X-MS-API-ROLEÜst bilgi yoksa, istek sistem rolü bağlamındaauthenticatedişlenir. Bu, kullanıcının oturum açmış olarak tanındığı ancak belirteçten belirli bir uygulama tanımlı rol olarak tanınmadığı anlamına gelir. -
Eşleşme Davranışı: Üst bilgi sağlanmışsa
X-MS-API-ROLEve değeri istemci sorumlusununclaimsrolüyle eşleşiyorsa, kullanıcı istek için bu rolü kabul eder. -
Uyumsuzluk Davranışı: Üst bilgi sağlanmışsa
X-MS-API-ROLEancak değer istemci sorumlusundaki herhangi bir rolle eşleşmiyorsa, istek bir403 Forbiddendurum koduyla reddedilir. Bu, kullanıcının atanmadığı bir rolü talep etmemesini sağlar.
EntraId (kimlik doğrulama sağlayıcısı)
{
"host": {
"authentication": {
"provider": "EntraId", // previously AzureAd
"jwt": {
"audience": "00001111-aaaa-2222-bbbb-3333cccc4444",
"issuer": "https://login.microsoftonline.com/98765f43-21ba-400c-a5de-1f2a3d4e5f6a/v2.0"
}
}
}
}
Bu sağlayıcı, Microsoft Entra'da kullanıcı ve uygulama kimlikleriyle uç noktaların güvenliğini sağlar. Kullanıcıların veya diğer hizmetlerin Entra kiracısı içinde güvenli erişime ihtiyaç duyduğu tüm hizmetler için idealdir.
[! NOT] Sağlayıcı
EntraIddaha önce olarak adlandırılmıştıAzureAd. Eski ad çalışmaya devam eder, ancak geliştiricilerin yapılandırmalarını 'den'eAzureAdEntraIdgeçirmeleri tavsiye edilir.
Bu sağlayıcı, üst bilgide Authorization Microsoft Entra tarafından verilen standart bir JWT Taşıyıcı belirteci bekler. Belirtecin belirli bir uygulama için yapılandırılması audience gerekir (talep kullanılarak). Kullanıcı veya hizmet sorumlusu rollerinin belirteç içindeki bir talepte olması beklenir. Kod varsayılan olarak bir roles talep arar.
Anonim: Sağlayıcı yapılandırıldıysa EntraId ancak üst bilgi olmadan Authorization bir istek gelirse, istek sistem rolüne anonymousatanır.
Kodu çözülen bir JWT yükü aşağıdaki gibi görünebilir:
{
"aud": "...", // Audience - your API
"iss": "https://login.microsoftonline.com/{tenant-id}/v2.0", // Issuer
"oid": "...", // User or principal object ID
"roles": [
"reader",
"writer"
],
// ... other claims
}
X-MS-API-ROLE üst bilgisi hakkında
-
Rol ve Davranış:
X-MS-API-ROLEÜst bilgi, kullanıcının istek için varsaymak istediği rolü belirtmek için kullanılır. Bu üst bilginin değeri, JWT belirtecinin talebinde bulunanrolesrol değerlerinden biriyle eşleşmelidir. -
Gerekli mi?: Hayır.
X-MS-API-ROLEÜst bilgi yoksa, istek sistem rolü bağlamındaauthenticatedişlenir. Bu, kullanıcının oturum açmış olarak tanındığı ancak belirteçten belirli bir uygulama tanımlı rol olarak tanınmadığı anlamına gelir. -
Eşleşme Davranışı: Üst bilgi sağlanmışsa
X-MS-API-ROLEve taleptekirolesbir rolle eşleşiyorsa, kullanıcının bağlamı bu role ayarlanır. -
Uyuşmazlıkta Davranış: Üst bilgi sağlanmışsa
X-MS-API-ROLEancak değeri taleptekirolesherhangi bir rolle eşleşmiyorsa, istek bir403 Forbiddendurum koduyla reddedilir. Bu, kullanıcının atanmadığı bir rolü talep etmemesini sağlar.
Özel (kimlik doğrulama sağlayıcısı)
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<client-id-or-api-audience>",
"issuer": "https://<your-domain>/oauth2/default"
}
}
}
}
Bu sağlayıcı, Veri API'leri oluşturucusunu JWT'ler veren bir üçüncü taraf kimlik sağlayıcısıyla (Auth0, Okta veya özel kimlik sunucusu gibi) tümleştirmek isteyen geliştiricilere yöneliktir. Belirteçlerin beklenen audience ve issuer değerlerini yapılandırma esnekliği sağlar.
Sağlayıcı, Custom üst bilgide Authorization standart bir JWT Taşıyıcı belirteci bekler. Sağlayıcıdan en EntraId önemli fark, geçerli issuer ve audience Veri API'sini oluşturucusunun yapılandırma dosyasında yapılandırmanızdır. Sağlayıcı, belirteci güvenilir yetkilinin yayınlanıp verilmediğini denetleyerek doğrular. Kullanıcının rollerinin JWT yükündeki bir roles talepte olması beklenir.
[! NOT] Bazı durumlarda, üçüncü taraf kimlik sağlayıcısına bağlı olarak geliştiricilerin JWT'lerinin yapısını Veri API oluşturucusu tarafından beklenen yapıyla eşleşecek şekilde zorlaması gerekir (aşağıda gösterilmiştir).
Anonim: Sağlayıcı yapılandırıldıysa Custom ancak üst bilgi olmadan Authorization bir istek gelirse, istek sistem rolüne anonymousatanır.
Bir sağlayıcı için kodu çözülen JWT custom yükü şu şekilde görünebilir:
{
"aud": "my-api-audience", // Must match configuration
"iss": "https://my-custom-issuer.com/", // Must match configuration
"sub": "user-id",
"roles": [
"editor",
"viewer"
],
// ... other claims
}
X-MS-API-ROLE üst bilgisi hakkında
-
Rol ve Davranış:
X-MS-API-ROLEÜst bilgi, sağlayıcıdaEntraIdolduğu gibi çalışır. Kullanıcının atanmış rollerinden birini seçmesine olanak tanır. Bu üst bilginin değeri, özel JWT belirtecindekirolestalepteki rollerden biriyle eşleşmelidir. -
Gerekli mi?: Hayır.
X-MS-API-ROLEÜst bilgi yoksa, kullanıcı sistem rolündeauthenticatedolarak değerlendirilir. -
Eşleşme Davranışı: Üst bilginin değeri JWT'nin
X-MS-API-ROLEtalebindeki bir rolle eşleşiyorsaroles, kullanıcının bağlamı yetkilendirme amacıyla bu role ayarlanır. -
Uyuşmazlıkta Davranış:
X-MS-API-ROLEÜst bilginin değeri taleptekirolesherhangi bir rolle eşleşmiyorsa istek bir403 Forbiddendurum koduyla reddedilir. Bu, kullanıcının atanmadığı bir rolü talep etmemesini sağlar.
Simülatör (kimlik doğrulama sağlayıcısı)
Bu sağlayıcı, geliştiricilerin Entra Identity veya EasyAuth gibi tam bir kimlik doğrulama sağlayıcısı ayarlamaya gerek kalmadan yapılandırmalarını, özellikle authorization de ilkeleri test etmelerini kolaylaştıracak şekilde tasarlanmıştır. Bir authenticated kullanıcının simülasyonunu oluşturur.
Sağlayıcı Simulator JWT belirteçlerini kullanmaz. Kimlik doğrulaması simülasyonu yapılır. Bu sağlayıcı kullanılırken, tüm istekler kimliği doğrulanmış bir kullanıcıdan geliyormuş gibi kabul edilir.
X-MS-API-ROLE üst bilgisi hakkında
-
Rol ve Davranış:
X-MS-API-ROLEüst bilgi, kullanılırkenSimulatorrol belirtmenin tek yoludur. Rol listesi olan bir belirteç olmadığından, sistem bu üst bilgide gönderilen role örtük olarak güvenir. - Gerekli mi?: Hayır.
-
Devamsızlık Davranışı:
X-MS-API-ROLEÜst bilgi yoksa, istek sistem rolü bağlamındaauthenticatedişlenir. -
İletişim Durumu Davranışı: Üst bilgi varsa
X-MS-API-ROLE, istek üst bilginin değerinde belirtilen rol bağlamında işlenir. Talep listesinde doğrulama yoktur, bu nedenle geliştirici ilkelerini test etmek için ihtiyaç duyduğu herhangi bir rolün benzetimini yapabilir.
Üretimde Simülatör
authentication.provider olarak ayarlanırsa Simulatorruntime.host.modeproduction, Veri API oluşturucusu başlatılamaz.
"host": {
"mode": "production", // or "development"
"authentication": {
"provider": "Simulator"
}
}
JWT (Kimlik doğrulaması ana bilgisayar çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
jwt |
object | ❌ Hayır | - |
Genel JSON Web Belirteci (JWT) yapılandırması.
İç içe özellikler
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication.jwt |
audience |
string | ❌ Hayır | None |
runtime.host.authentication.jwt |
issuer |
string | ❌ Hayır | None |
Format
{
"runtime": {
"host": {
"authentication": {
"jwt": {
"audience": "<client-id>",
"issuer": "<issuer-url>"
}
}
}
}
}
Sayfalandırma (Çalışma Zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
pagination |
object | ❌ Hayır | - |
REST ve GraphQL uç noktaları için genel sayfalandırma sınırları.
İç içe özellikler
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.pagination |
max-page-size |
int | ❌ Hayır | 100,000 |
runtime.pagination |
default-page-size |
int | ❌ Hayır | 100 |
runtime.pagination |
next-link-relative |
boolean | ❌ Hayır | false |
Desteklenen en büyük sayfa boyutu değerleri
| Value | Result |
|---|---|
integer |
Herhangi bir pozitif 32 bit tamsayı desteklenir. |
0 |
Desteklenmiyor. |
-1 |
Varsayılan olarak desteklenen en yüksek değerdir. |
< -1 |
Desteklenmiyor. |
Varsayılan sayfa boyutu desteklenen değerler
| Value | Result |
|---|---|
integer |
Geçerli max-page-sizeküçük pozitif tamsayılar. |
0 |
Desteklenmiyor. |
-1 |
Varsayılan olarak geçerli max-page-size ayarını kullanır. |
< -1 |
Desteklenmiyor. |
Sonraki bağlantı-göreli davranış
olduğunda next-link-relativetrue, sayfalandırma nextLink değerleri mutlak URL'ler yerine göreli URL'ler kullanır.
| Value | Example |
|---|---|
false (varsayılan) |
"nextLink": "https://localhost:5001/api/users?$after=..." |
true |
"nextLink": "/api/users?$after=..." |
Format
{
"runtime": {
"pagination": {
"max-page-size": <integer; default: 100000>,
"default-page-size": <integer; default: 100>,
"next-link-relative": <boolean; default: false>
}
}
}
Note
Değer değerinden max-page-sizebüyük olduğunda sonuçlar konumunda max-page-sizeeşlenir.
Örnek: REST'te sayfalama
Request
GET https://localhost:5001/api/users
Yanıt yükü
{
"value": [
{
"Id": 1,
"Name": "Alice",
"Age": 30,
"IsAdmin": true,
"IsMinor": false
},
{
"Id": 2,
"Name": "Bob",
"Age": 17,
"IsAdmin": false,
"IsMinor": true
}
],
"nextLink": "https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}
Sonraki Sayfayı İste
GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==
Örnek: GraphQL'de sayfalama
İstek yükü (Sorgu)
query {
users {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Yanıt yükü
{
"data": {
"users": {
"items": [
{
"Id": 1,
"Name": "Alice",
"Age": 30,
"IsAdmin": true,
"IsMinor": false
},
{
"Id": 2,
"Name": "Bob",
"Age": 17,
"IsAdmin": false,
"IsMinor": true
}
],
"hasNextPage": true,
"endCursor": "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}
}
}
Sonraki Sayfayı İste
query {
users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Örnek: İsteklerde Erişim max-page-size
max-page-size değerini (REST) veya $limit (GraphQL) firstolarak ayarlayarak -1 kullanın.
REST
GET https://localhost:5001/api/users?$limit=-1
GraphQL
query {
users(first: -1) {
items {
...
}
}
}
Önbellek (çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
cache |
object | ❌ Hayır | - |
Genel Önbellek yapılandırması.
İç içe özellikler
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache |
enabled |
boolean | ❌ Hayır | False |
runtime.cache |
ttl-seconds |
integer | ❌ Hayır | 5 |
Tip
Varlık düzeyi cache.ttl-seconds özelliği varsayılan olarak bu genel değeri kullanır.
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>
}
}
}
Important
Genel enabled ise false, tek tek varlık düzeyi enabled önemli değildir.
Telemetri (çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
telemetry |
object | ❌ Hayır | - |
Genel telemetri yapılandırması.
İç içe özellikler
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
log-level |
dictionary | ❌ Hayır | None |
runtime.telemetry |
application-insights |
object | ❌ Hayır | - |
runtime.telemetry |
open-telemetry |
object | ❌ Hayır | - |
Ad alanı başına günlük ayrıntı düzeyini yapılandırıyor. Bu, standart .NET günlük kurallarını izler ve ayrıntılı denetime izin verir, ancak Veri API oluşturucusu iç işlevleri hakkında biraz bilgi sahibi olduğunu varsayar. Veri API'si oluşturucusu açık kaynaktır: https://aka.ms/dab
Format
{
"runtime": {
"telemetry": {
"log-level": {
"namespace": "log-level",
"namespace": "log-level"
}
}
}
}
Tip
log-level hem geliştirme hem de üretimde çalışırken yeniden yüklenebilir. Şu anda üretimde çalışırken yeniden yüklemeyi destekleyen tek özelliktir.
Example
{
"runtime": {
"telemetry": {
"log-level": {
"Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
"Azure.DataApiBuilder.Core": "information",
"default": "warning"
}
}
}
}
Application Insights (telemetri)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
application-insights |
object | ❌ Hayır | - |
Application Insights'ta günlüğe kaydetmeyi yapılandırılır.
İç içe özellikler
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.application-insights |
enabled |
boolean | ❌ Hayır | False |
runtime.telemetry.application-insights |
connection-string |
string | ✔️ Evet | None |
Format
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": <true; default: true> | <false>
"connection-string": <string>
}
}
}
}
OpenTelemetry (telemetri)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
open-telemetry |
object | ❌ Hayır | - |
Telemetriyi Aç için günlüğe kaydetmeyi yapılandırıyor.
İç içe özellikler
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.open-telemetry |
enabled |
boolean | ❌ Hayır | true |
runtime.telemetry.open-telemetry |
endpoint |
string | ✔️ Evet | None |
runtime.telemetry.open-telemetry |
headers |
string | ❌ Hayır | None |
runtime.telemetry.open-telemetry |
service-name |
string | ❌ Hayır | "dab" |
runtime.telemetry.open-telemetry |
exporter-protocol |
sabit listesi (grpc | httpprotobuf) |
❌ Hayır | grpc |
Birden çok üst bilgi , (virgül) birbirinden ayrılır.
Format
{
"runtime": {
"telemetry": {
"open-telemetry": {
"enabled": <true> (default) | <false>,
"endpoint": <string>,
"headers": <string>,
"service-name": <string> (default: "dab"),
"exporter-protocol": <"grpc" (default) | "httpprotobuf">
}
}
}
}
Example
{
"runtime": {
"telemetry": {
"open-telemetry": {
"enabled": true,
// a gRPC endpoint example
"endpoint": "http://localhost:4317",
// an HTTP/protobuf endpoint example
"endpoint": "http://localhost:4318/v1/metrics",
"headers": "api-key=key,other-config-value=value",
"service-name": "dab",
}
}
}
}
OTEL_EXPORTER_OTLP_HEADERS hakkında daha fazla bilgi edinin.
Note
gRPC (4317) daha hızlıdır ve akışı destekler ancak daha fazla kurulum gerektirir. HTTP/protobuf (4318), hata ayıklaması daha basit ve daha kolay ancak daha az verimlidir.
Sistem durumu (çalışma zamanı)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
health |
object | ❌ Hayır | - |
Genel sistem durumu denetimi uç noktası (/health) yapılandırması.
İç içe özellikler
| Parent | Property | Type | Required | Default | Aralık/Notlar |
|---|---|---|---|---|---|
runtime.health |
enabled |
boolean | ❌ Hayır | true |
|
runtime.health |
roles |
dize dizisi | ✔️ Evet* | null |
*Üretim modunda gereklidir |
runtime.health |
cache-ttl-seconds |
integer | ❌ Hayır | 5 |
Min: 0 |
runtime.health |
max-query-parallelism |
integer | ❌ Hayır | 4 |
Min: 1, Max: 8 (kelepçeli) |
Geliştirme ve üretim davranışı
| Condition | Geliştirme Davranışı | Üretim Davranışı |
|---|---|---|
health.enabled = yanlış |
403 durum |
403 durum |
health.enabled = doğru |
Role bağlıdır | Role bağlıdır |
roles atlanmış veya null |
Sistem durumu görüntüleniyor |
403 durum |
geçerli rol içinde değil roles |
403 durum |
403 durum |
içindeki geçerli rol roles |
Sistem durumu görüntüleniyor | Sistem durumu görüntüleniyor |
roles Içerir anonymous |
Sistem durumu görüntüleniyor | Sistem durumu görüntüleniyor |
Format
{
"health": {
"enabled": <true> (default) | <false>,
"roles": [ <string> ], // required in production
"cache-ttl-seconds": <integer; default: 5>,
"max-query-parallelism": <integer; default: 4>
}
}
Note
Genel enabled ise false, tek tek varlık düzeyi enabled önemli değildir.
Example
{
"health": {
"enabled": true,
"roles": ["admin", "support"],
"cache-ttl-seconds": 10,
"max-query-parallelism": 6
}
}