Ana içeriğe atla
Bu doküman spesifik bir politikanın detaylı kullanımını anlatır. Eğer Apinizer politika yapısını ilk kez kullanıyorsanız veya politikaların genel çalışma prensiplerini öğrenmek istiyorsanız, öncelikle Politika Nedir? sayfasını okumanızı öneririz.

Genel Bakış

Amacı Nedir?

  • Gelen SOAP veya REST tabanlı XML isteklerinin yapısal bütünlüğünü sağlamak, backend servislerine hatalı veri ulaşmasını önlemek.
  • API Proxy (API Vekil Sunucusu) seviyesinde WSDL veya XSD şemalarıyla uyumluluk zorunluluğu getirerek entegrasyon kalite standartlarını yükseltmek.
  • Koşul bazlı tetikleme ile yalnızca belirli endpoint veya header kombinasyonlarında XML şema doğrulaması yaparak esnek politika yönetimi sunmak.
  • Özel hata mesajları sayesinde istemci tarafının hatalı şemayı hızlıca düzeltmesini desteklemek.

Çalışma Prensibi

  1. İstek Gelişi: API Gateway’e gelen her HTTP/HTTPS isteği için, istemin kaynak IP adresi tespit edilir.
  2. Politika Kontrolü: XML Şema Doğrulama politikası aktif ise, sistem aşağıdaki sırayla kontrol yapar:
    • Condition (koşul) tanımlı mı? Varsa koşul sağlanıyor mu?
    • Politika aktif mi (active=true)?
    • Variable kullanılıyor mu yoksa Apinizer default mı?
  3. XML Şema Değerlendirmesi: validateAgainstSpec=true ise ilgili API Proxy’nin WSDL tanımlarından şema çekilir; aksi durumda girilen schemaDefinitionList XSD içerikleri ve pathForBody XPath çıktısı kullanılarak XML parser doğrulaması yapılır.
  4. Karar Verme:
    • Eşleşme Var: İstek şemaya uygunsa işlem zinciri devam eder, backend hedefe yönlendirme yapılır.
    • Eşleşme Yok: XML yapısı şemaya uymuyorsa politika isteği durdurur ve özelleştirilebilir hata çıktılarını döndürür.
  5. Hata İşleme: Politika kuralına uymayan istekler için özelleştirilebilir HTTP durum kodu ve hata mesajı döndürülür.

Özellikler ve Yetenekler

Temel Özellikler

  • XPath Tabanlı Gövde Seçimi: pathForBody alanı sayesinde SOAP Body içinden doğrulanacak düğüm seçilir; boş bırakılırsa tüm gövde incelenir.
  • Çoklu XSD Yönetimi: schemaDefinitionList ile birden çok şema segmenti eklenebilir, her biri schemaNo ile sıralanır ve systemId ile ayırt edilir.
  • İsim Çakışması Önleme: Politika adı kaydedilmeden önce proje içinde benzersizlik kontrolünden geçer, kullanıcıya anlık geri bildirim sağlar.
  • Aktif/Pasif Durum Kontrolü: Politikanın aktif veya pasif durumunu kolayca değiştirme (active/passive toggle). Pasif durumda politika uygulanmaz ancak yapılandırması saklanır.
  • Koşul Bazlı Uygulama: Query Builder ile karmaşık koşullar oluşturarak politikanın ne zaman uygulanacağını belirleme (örn: sadece belirli endpoint’lere veya header değerlerine göre).

İleri Düzey Özellikler

  • WSDL Entegrasyonu: validateAgainstSpec seçildiğinde, WSDL’den türetilen XML tipleri otomatik kullanılır ve harici XSD girişi gerektirmez.
  • XPath Test Çalıştırıcısı: “Test Data Transformation” bileşeni XPath ifadesinin hedef düğümü doğru seçip seçmediğini anlık olarak doğrular.
  • Şema Versiyonlama Stratejileri: Aynı politika içinde farklı schemaDefinitionList öğeleri tutularak kademeli geçiş veya geri dönüş planlanabilir.
  • Export/Import Özelliği: Politika yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
  • Policy Group ve Proxy Group Desteği: Birden fazla politikayı Policy Group içinde yönetme. Proxy Group’lara toplu politika atama. Merkezi güncelleme ve deploy işlemleri.
  • Deploy ve Versiyonlama: Politika değişikliklerini canlı ortama deploy etme. Hangi API Proxy’lerde kullanıldığını görme (Policy Usage). Proxy Group ve Policy Group kullanım raporları.

Kullanım Senaryoları

SenaryoDurumÇözüm (Politika Uygulaması)Beklenen Davranış / Sonuç
SOAP Sipariş DoğrulamaÜçüncü parti SOAP servisi hatalı XML gönderiyorpathForBody=//*[local-name()='Order'], WSDL doğrulaması kapalı, ilgili XSD ekleniyor.Şemaya uymayan istek 400 ile bloklanır, hizmet kesilmez.
Entegrasyon TestiTest ortamında sık değişen XSD sürümleri mevcutBir politika içinde birden fazla schemaDefinitionList versiyonu tutuluyor.Aktif şema güncellenirken eski kayıt saklanır, rollback mümkündür.
Ürün Kataloğu ServisiSadece /product/* endpoint’lerinde doğrulama gerekiyorCondition: Path=/product/*, özel XSD ekleniyor.Diğer endpoint’ler etkilenmeden ürün API’leri için doğrulama devrede.
WSDL Bazlı Banka EntegrasyonuBankanın sağladığı WSDL güncel tutuluyorvalidateAgainstSpec=true, politika global tanımlanıyor.Yeni WSDL yayımlandığında yeniden deploy edilerek doğrulama güncellenir.
XML Gövde KırpmaBüyük SOAP body içinde tek alan kritikpathForBody=//*[local-name()='PaymentRequest'] giriliyor.Sadece ödeme isteği düğümü doğrulanır, performans artar.
Global Politika PaylaşımıBirden çok API aynı XSD’yi kullanıyorPolitika global oluşturulup Policy Group ile paylaşılıyor.Tüm ilgili API Proxy’lerde aynı doğrulama uygulanır.
Bölgesel Uyumluluk (opsiyonel)Sadece AB kullanıcılarının verisi kontrol edilecekCondition: Header=X-Region, Equals=EU.AB istekleri şemaya göre doğrulanır, diğerleri bypass edilir.

Politika Parametrelerini Yapılandırma

Bu adımda, kullanıcı yeni bir politika oluşturabilir ya da mevcut politika parametrelerini yapılandırarak erişim kurallarını belirleyebilir. Tanımlanan parametreler, politikanın çalışma şeklini (örneğin hangi IP’lerin izinli olacağı, coğrafi kısıtlamalar, koşullu aktivasyonlar vb.) doğrudan etkiler. Bu sayede politika hem kuruma özel gereksinimlere göre özelleştirilebilir hem de merkezi olarak yönetilebilir.

Yeni XML Şema Doğrulama Politikası Oluşturma

XML Şema Doğrulama Politikası

Yapılandırma Adımları

AdımAçıklama / İşlem
Adım 1: Oluşturma Sayfasına Gitme- Sol menüden Development → Global Settings → Global Policies → XML Şema Doğrulama bölümüne gidin.
- Sağ üstteki [+ Create] butonuna tıklayın.
Adım 2: Temel Bilgileri GirmePolicy Status (Politika Durumu): Aktif/Pasif durumu gösterir. Yeni politikalar varsayılan olarak aktiftir.

Name (İsim) Zorunlu: Örnek: Production_XMLSchema
- Benzersiz isim girin, boşlukla başlamaz.
- Sistem otomatik kontrol eder. Yeşil tik: kullanılabilir. Kırmızı çarpı: mevcut isim.

Description (Açıklama): Örnek: “Sipariş akışında XML şema doğrulaması yapar.”
- Maks. 1000 karakter.
- Politikanın amacını açıklayın.
Adım 3: XPath Yapılandırması- pathForBody alanına doğrulanacak XML düğümünü hedefleyen XPath ifadesini girin.
- Tam gövde doğrulaması için boş bırakın veya / kullanın.
- XPath doğruluğunu test etmek için Test Data Transformation butonunu kullanabilirsiniz.
Adım 4: WSDL Şeması Kullanımı (Varsa)- validateAgainstSpec seçeneğini işaretleyerek politikayı bağlı WSDL şemasına göre çalıştırın.
- İşaretlendiğinde manuel XSD giriş alanları gizlenir ve bakım yükü azalır.
Adım 5: XSD Şema Tanımları (Varsa)- validateAgainstSpec kapalıysa Add butonuyla schemaDefinitionList öğeleri ekleyin.
- Her öğe için XML şema içeriğini düzenleyin ve gerekiyorsa systemId alanı ile dış referanslar belirtin.
- Sıralama schemaNo alanıyla otomatik güncellenir.
Adım 6: Koşul Tanımlama (İsteğe Bağlı)- Condition sekmesine geçin.
- Koşullar, politikanın hangi durumda aktif olacağını belirler.

Örnekler:
- Ortam bazlı: Header = X-Environment, Operator = Equals, Value = Canlı Ortam
- API Key bazlı: Header = X-API-Key, Starts With = PROD-
- Endpoint bazlı: Path = /api/admin/*
Koşul tanımlamazsa politika her zaman aktif

Detaylar için bakabilirsiniz: Koşullar (Conditions)
Adım 7: Hata Mesajı Özelleştirme (İsteğe Bağlı)- Error Message Customization sekmesine gidin.
- Erişim reddedildiğinde dönecek mesajı özelleştirin.

Varsayılan:
{ "statusCode": 403, "message": "[Default hata mesajı]" }

Özel:
{ "statusCode": 403, "errorCode": "[CUSTOM_ERROR_CODE]", "message": "[Özel mesaj]" }
Adım 8: Kaydetme- Sağ üstteki [Save] butonuna tıklayın.

Kontrol Listesi: Benzersiz isim. Zorunlu alanlar dolu. En az bir XSD tanımı veya WSDL seçimi mevcut

Sonuç:
- Politika listeye eklenir.
- API’lere bağlanabilir.
- Global politikaysa otomatik uygulanır.
Koşullar ve Hata Mesajı Özelleştirme panellerinin açıklaması için Politika Nedir? sayfasındaki Koşullar ve Hata Mesajı Özelleştirme (Error Message Customization) bölümlerini inceleyebilirsiniz.

Politikayı Silme

Bu politikanın silme adımları ve kullanımdayken uygulanacak işlemler için Politika Yönetimi sayfasındaki Akıştan Politika Kaldırma bölümüne bakabilirsiniz.

Politikayı Dışa/İçe Aktarma

Bu politikanın dışa aktarma (Export) ve içe aktarma (Import) adımları için Export/Import sayfasına bakabilirsiniz.

Politikayı API’ye Bağlama

Bu politikanın API’lere nasıl bağlanacağına ilişkin süreç için Politika Yönetimi sayfasındaki Akışa Politika Ekleme bölümüne bakabilirsiniz.

İleri Düzey Özellikler

ÖzellikAçıklama ve Adımlar
WSDL Tabanlı Otomatik Şema Güncelleme- validateAgainstSpec etkinleştirilir.
- API Proxy deploy öncesi WSDL yeniden içeri aktarılır.
- Politika deploy edilerek yeni şema yayına alınır.
Çoklu XSD Segmenti Kullanımı- Birden fazla schemaDefinitionList öğesi eklenir.
- Her öğeye açıklayıcı systemId yazılır.
- Test ortamında her şema için doğrulama yapılır.
XPath Doğrulama Testi- Test butonu ile örnek XML yüklenir.
- XPath sonucu görüntülenir.
- Uygun düğüm seçimi teyit edildikten sonra politika kaydedilir.

Best Practices

Yapılması Gerekenler ve En İyi Uygulamalar

KategoriAçıklama / Öneriler
XPath YönetimiKötü: Karmaşık ve belirsiz XPath kullanmak.
İyi: XPath’i tek bir hedef düğüm için yazmak.
En İyi: XPath’i versiyonlu olarak dokümante edip test aracıyla doğrulamak.
XSD SürümlemeKötü: XSD güncellendiğinde eski sürümü silmek.
İyi: Eski sürümü dışa aktarıp saklamak.
En İyi: Politika Export + Git repo kombinasyonu ile sürüm takibi yapmak.
WSDL SenaryolarıKötü: WSDL değişince politikayı el ile güncellemeyi unutmak.
İyi: WSDL değişikliklerini change log ile izlemek.
En İyi: CI/CD pipeline’da WSDL diff tespiti ve otomatik politika deploy süreci kurmak.
Hata MesajlarıKötü: İstemciye genel hata mesajı döndürmek.
İyi: Hata kodunu belirtmek.
En İyi: XPath ve şema adıyla birlikte düzeltme önerisi içeren yapılandırılmış JSON döndürmek.
Koşul TanımlarıKötü: Politikanın her istekte çalışmasına izin verip gereksiz yük oluşturmak.
İyi: Temel filtreler eklemek.
En İyi: Ortam, endpoint ve header kombinasyonlarını Query Builder ile optimize etmek.

Güvenlik En İyi Uygulamaları

Güvenlik AlanıAçıklama / Uyarılar
Şema Kaynağı GüvenliğiXSD dosyalarının güvenilir kaynaklardan alındığından emin olun, imza veya checksum doğrulaması kullanın.
WSDL DoğrulamaWSDL güncellemelerini sadece yetkili kullanıcıların yapmasına izin verin, değişiklikleri audit log’larda takip edin.
Politika İzinleriGlobal politikaları düzenleme yetkisini sınırlı tutun, RBAC kontrollerini gözden geçirin.
Hata Mesajı İçeriğiHata mesajlarında iç sistem detaylarını paylaşmayın, sadece düzeltmeye yardımcı olacak minimum bilgiyi verin.
Export/Import SüreciExport edilen ZIP dosyalarını şifreli depolayın, import öncesi içerik kontrolü yapın.

Kaçınılması Gerekenler

KategoriAçıklama / Uyarılar
Şemasız YayınNeden kaçınılmalı: Şema olmadan politika anlamsız kalır.
Alternatif: En az bir XSD tanımı ekleyin veya WSDL seçeneğini aktif edin.
Aşırı XPath DerinliğiNeden kaçınılmalı: Karmaşık XPath performansı düşürür ve bakımını zorlaştırır.
Alternatif: XML yapısını sadeleştirip daha basit XPath kullanın.
Geliştirme Ortamında Pasif BırakmaNeden kaçınılmalı: Üretim öncesi hatalar fark edilmeyebilir.
Alternatif: Geliştirme ve testte de aktif tutup otomasyon testlerine ekleyin.
Kontrolsüz WSDL GüncellemesiNeden kaçınılmalı: Yeni WSDL istekleri beklenmedik şekilde reddedebilir.
Alternatif: Güncelleme öncesi regression testleri çalıştırın ve sürüm notu hazırlayın.

Performans İpuçları

KriterÖneri / Etki
XPath KarmaşıklığıÖneri: Daha kısa ve doğrudan XPath ifadeleri kullanın.
Etki: Parser süresi kısalır, gecikme azalır.
Şema BoyutuÖneri: Gereksiz yorum satırlarını ve boşlukları kaldırın.
Etki: Bellek tüketimi ve yükleme süresi düşer.
Şema SayısıÖneri: İlgili XSD’leri tek dosyada birleştirmek yerine modüler tutun.
Etki: Değişiklik izolasyonu ve cache yönetimi kolaylaşır.
Koşul FiltrelemeÖneri: Politikanın sadece gerekli endpoint’lerde çalışmasını sağlayın.
Etki: Gereksiz doğrulama maliyeti ortadan kalkar.
Test ve İzlemeÖneri: Politika çalışmasını Apinizer metrikleriyle izleyin.
Etki: Performans sorunları erken tespit edilir ve optimize edilir.

Sık Sorulan Sorular (SSS)

KategoriSoruCevap
GenelPolitika sadece XML içerikleri mi doğrular?Evet, politika XML formatındaki gövdeleri XSD veya WSDL şemalarına göre değerlendirir. JSON veya diğer formatlar için farklı politikalar kullanılmalıdır.
GenelvalidateAgainstSpec ne zaman tercih edilmeli?API Proxy WSDL dosyasını güncel tuttuğunuz ve manuel XSD yönetimini azaltmak istediğiniz senaryolarda bu seçenek önerilir.
TeknikXPath boş bırakılırsa ne olur?Politika tüm XML gövdesini doğrulamaya çalışır; büyük gövdelerde performans etkisi olabilir.
TeknikŞema yüklenemediğinde hangi hata döner?500 Internal Server Error kodu ile şema değerlendirme hatası bildirimi yapılır ve detay log’larda tutulur.
KullanımPolitika birden fazla API Proxy’de paylaşılabilir mi?Global olarak tanımlandığında Policy Group veya Proxy Group aracılığıyla birden fazla API Proxy’ye atanabilir.
KullanımHata mesajını farklı ortamlarda nasıl özelleştirebilirim?Error Message Customization sekmesinde ortam bazlı şablonlar oluşturabilir, Condition bölümüyle ortam değişkenlerine göre farklı politikalar tetikleyebilirsiniz.