Ana içeriğe geç

JWT Kimlik Doğrulama

ipucu

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?​

  • Merkezi JWT üretimini standardize etmek: Farklı istemci tipleri için güvenilir JWT oluşturma akışını Apinizer üzerinde toplar.
  • Kimlik doğrulama kaynaklarını yönetmek: Secret Manager, LDAP, Database, API veya OIDC tabanlı kimlik doğrulama servislerini seçilebilir hale getirir.
  • Yetkilendirme entegrasyonunu kolaylaştırmak: Rol ve yöntem bazlı yetkilendirmeyi JWT üretimi ile aynı politika üzerinde koordine eder.
  • Operasyonel denetimi sağlamak: Token süreleri, yenileme hakları ve header aktarımlarını merkezi olarak kontrol ederek audit ve izlenebilirlik sunar.

Ç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ü: JWT Kimlik 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. JWT Üretim ve Doğrulama Süreci: Seçilen grant type'a göre kimlik doğrulama kaynağı tetiklenir, imzalama algoritması uygulanır, token ömrü ve refresh hakları hesaplanır.
  4. Karar Verme:
    • Eşleşme Var: Token oluşturulur veya doğrulanır, gerekirse kullanıcı/rol header'ları eklenerek hedef servise yönlendirilir.
    • Eşleşme Yok: Varsayılan veya özelleştirilmiş hata mesajı ile istek reddedilir; yenileme tokenı üretimi/iptali yapılmaz.
  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​

  • Grant Type Yönetimi: Client Credentials ve Password grant tipleri arasında hızlı geçiş, her tip için gerekli kimlik doğrulama bileşenlerinin otomatik denetlenmesi.
  • Kimlik Kaynağı Seçimi: Secret Manager, LDAP, Database, harici API veya OIDC Kimlik Sağlayıcı kaynaklarını JWT üretim sürecine entegre eder.
  • Token Yaşam Döngüsü Kontrolü: Token ömrü, yenileme hak sayısı ve süreleri için ayrıntılı yapılandırma ve varsayılan değer atamaları.
  • 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​

  • JWT İmza Algoritmaları: RS256, RS384, RS512 seçenekleri ile hedef sistem gereksinimlerine uygun imzalama sağlar.
  • Header Enjeksiyonu: Kullanıcı kimliği ve rol bilgilerini istenilen header isimleriyle hedefe taşır; role-based yetkilendirme ile entegre çalışır.
  • Refresh Token Politikaları: Yenileme token'ı üretimi, kullanım limiti ve süreleri üzerinden güvenlik/konfor dengesi kurar.
  • Export/Import Özelliği: Politika yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Geliştirme, 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ç
Mobil İstemci JWT DağıtımıMobil uygulamalar ayrı client kimlikleri ile bağlanacakGrant Type: CLIENT_CREDENTIALS, Secret Manager seçili, token süresi 30 dkHer mobil istemciye otomatik JWT üretilir, backend doğrulaması sorunsuz
Yetkili Kullanıcı OturumuKullanıcı adı/şifre ile giriş yapılıyorGrant Type: PASSWORD, LDAP kaynağı, token 15 dk + refresh 2 kezLDAP doğrulaması sonrası JWT üretilir, refresh ile oturum 45 dk uzar
Mikroservisler Arası İletişimArka planda servisler birbirini çağırıyorGrant Type: CLIENT_CREDENTIALS, allowUrlParameters kapalı, header aktarımı aktifServisler sadece header üzerinden token taşır, URL sızıntısı engellenir
Coğrafi Kısıtlı GirişBelirli konumlardan gelen talepler kabul edilecekCondition: Geolocation header kontrolü, checkClientIpAddress açıkİzin verilen IP/konumlar JWT alır, diğerleri 403 döner
JWT Yenileme TosmasıRefresh token sayısı sınırlanmalıRefreshTokenAllowed true, Count=2, süresi 24 saatKullanıcı 2 yenileme sonrası yeniden giriş yapmak zorunda kalır
Yetkilendirme Header EnjeksiyonuRoller hedef servise taşınacakAuthorization sekmesi aktif, addRolesToHeader true, özel header adı setRoller belirlenen header'a eklenir, hedef servis RBAC uygular

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 JWT Kimlik Doğrulama Politikası Oluşturma​

JWT Kimlik 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 → JWT Kimlik Doğrulama Politikası 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_JWTAuth
- 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: "Password grant ile LDAP üzerinden JWT üretir."
- Maks. 1000 karakter.
- Politikanın amacını açıklayın.
Adım 3: Variable Kullanımı- Sayfanın üst kısmındaki işlem butonları alanında, [<> Variable] butonunu kullanarak dinamik değer seçebilirsiniz.
- Context/global variable ifadeleri sayesinde politika parametrelerini sabit değer yerine değişken tabanlı yönetebilirsiniz.
- Bu kullanım, değişen değerlerde manuel güncelleme ihtiyacını azaltır ve operasyonel kolaylık sağlar.
- Detaylı bilgi için Dinamik Değişkenler sayfasını inceleyebilirsiniz.
Adım 4: JWT Kimlik Doğrulama Parametreleri- Yönetim (varsayılan: Bu Politikadan Yönet): İki seçenekten biri seçilir.
  - ACL'den Yönet: Kimin çağırabileceğine consumer, API client ve ACL satırları karar verir; token ayarları API client'tan gelir.
  - Bu Politikadan Yönet: Bu politikanın kimlik kaynağı, grant tipleri ve token ayarları karar verir; API client ayarları kullanılmaz.
  - Grant Type, kimlik kaynağı ve token ayarları ile Tarayıcı ile giriş, API Anahtarını Göster, istemci adresi kontrolü, URL parametreleri, yetkilendirme bilgisini temizleme ve kimliği başlığa ekleme alanları yalnızca Bu Politikadan Yönet seçiliyken görünür. Kimlik kaynağı OIDC ise Yönetim seçimi görünmez.
- Grant Type: CLIENT_CREDENTIALS veya PASSWORD seçin; seçim, kullanılabilir kimlik kaynaklarını belirler.
- Kimlik Kaynağı: Her grant tipinde görünür. PASSWORD için Identity Role Group modalından LDAP/Database/API/OIDC veya Secret Manager seçimi yapın. CLIENT_CREDENTIALS için yalnızca Secret Manager (varsayılan — politika kendi token'ını eskisi gibi üretir ve doğrular) veya OIDC sunulur. OIDC seçildiğinde aranabilir bir OIDC Kimlik Sağlayıcı listesi açılır (ad, açıklama, sağlayıcı türü); Generic türündeki bir sağlayıcı da burada geçerli bir seçimdir — yalnızca token doğrulaması kullanılır, senkronizasyon devreye girmez. (JWT Yenileme Servisi seçiminde OIDC bir kimlik sağlayıcı olduğu için bu listede yer almaz — yenileme servisi yalnızca API tipi bir servis olabilir.)
- CLIENT_CREDENTIALS ile OIDC (sağlayıcının ürettiği token): politika token üretmez. İstemci erişim token'ını OIDC sağlayıcıdan alır ve Authorization: Bearer ile gönderir; Apinizer her istekte token'ı sağlayıcının doğrulama moduna göre doğrular (çevrimdışı JWKS imzası veya çevrimiçi introspection/userinfo), kimliği sağlayıcının Kullanıcı Adı Claim Yolu alanından çözer ve Eşleşen Consumer Zorunlu açıksa kota, ACL ve hız limiti atfı için bir Consumer ile eşler. Token süresi, yenileme ve Yönetim ayarları uygulanmadığı için gizlenir; bu proxy'nin /auth/* token ucu 400 invalid_request döner. Keycloak client-credentials token'ında kimlik claim'i preferred_username = service-account-<clientId> gelir; Consumer client id ile adlandırıldıysa sağlayıcının Kullanıcı Adı Claim Yolu alanını azp yapın.
- PASSWORD ile OIDC önceki davranışı korur: sağlayıcı sunulan bearer token'ı doğruladıktan sonra politika yine kendi token'ını üretir.
- Check Client IP Address: Secret Manager tabanlı yapılarda isteğin geldiği IP'yi doğrular.

İstemci için ACL Kontrol Et: Varsayılan olarak açıktır. Kimlik kaynağı Secret Manager olduğunda veya ACL'den Yönet modu seçildiğinde görünür; OIDC için gizlidir. Kapalıyken politika yalnızca kimliği çözümler ve doğrular; tüketicinin bu API Proxy veya Proxy Group için erişim listesini (ACL) kontrol etmez. Bkz. Yalnızca Kimlik Modu (ACL Kapalı).
Adım 5: Token ve Refresh Yapılandırması- Token Never Expires: Süresiz token üretecekse açın, aksi halde süreyi ve birimini girin.
- Refresh Token Allowed: Yenileme izni verilecekse açın, hak sayısı ve geçerlilik süresini tanımlayın.
- JWT Signature Algorithm: RS256/RS384/RS512 arasından hedef sistem gereksinimine göre seçim yapın.
Adım 6: Header ve Yetkilendirme Ayarları- Allow URL Parameters: Token'ın query parametresiyle gönderimini mümkün kılar; yalnızca güvenilir senaryolarda önerilir.
- Clear Auth: Gelen Authorization header'ını temizler; eski JWT'nin sıfırlanması için kullanılır.
- Set Resolved Identity to Context (Çözümlenen Kimliği İstek Bağlamına Yaz): Bu politikanın çözümlediği kimliğin (kullanıcı/anahtar) isteğin kimliği olarak kaydedilip kaydedilmeyeceğini belirler. Açık (varsayılan) iken bu kimlik trafik loglarında ve sonraki politikalar ile scriptlerde görünür. Kapalı iken kimlik yalnızca gerekli iç kimlik doğrulama/yetkilendirme kontrolleri için kullanılır, isteğin kalıcı kimliği olarak tutulmaz.
- Add User/Roles to Header: Kullanıcı ve rol bilgisini özel header isimleriyle hedef servise gönderir.
- Authorization Configuration: Rol bazlı gömme, method access ve JWT yenileme servisi gibi ileri seçenekleri açın.
Adım 7: 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 = production
- API Key bazlı: Header = X-API-Key, Starts With = PROD-
- Endpoint bazlı: Path = /api/admin/*

Koşul tanımlamazsa politika her zaman aktif
Adım 8: 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 9: Kaydetme- Sağ üstteki [Save] butonuna tıklayın.

Kontrol Listesi: Benzersiz isim. Zorunlu alanlar dolu. En az bir kimlik kaynağı seçimi tamamlandı.

Sonuç:
- Politika listeye eklenir.
- API'lere bağlanabilir.
- Global politikaysa otomatik uygulanır.

Client Id / Client Secret Yönetimi​

Bu Politikadan Yönet seçildiğinde, token isteklerinde doğrulanacak Client Id ve Client Secret değerleri; bu politikanın bağlı olduğu API Proxy, API Proxy Group veya Politika Grubu (Policy Group)'nun kendi anahtarlarıdır. Politika formunda yer alan API Anahtarını Göster (Show API Key) seçeneğiyle açılan pencerede mevcut Client Id ve Client Secret görüntülenebilir, kopyalanabilir ve gerektiğinde değiştirilebilir. Her iki alan salt okunurdur; değeri göstermek için göz butonu, değiştirmek için kalem butonu (Client Id Düzenle / Client Secret Düzenle) kullanılır.

Anahtar Üretim Tipi (Key Generation Type)​

Client Id veya Client Secret düzenlenirken ilgili kaydın adı yazılır ve bir anahtar üretim tipi seçilir:

  • Otomatik (Automatic): Yeni rastgele değeri sistem üretir.
  • Manuel (Manual): Değeri siz yazarsınız. Anahtar değerini elle girmenin tek yolu budur; yalnızca boşluklardan oluşan değer kabul edilmez.
Client Id veya Secret Key Düzenle onay diyaloğu
uyarı

Anahtarı değiştirmek kritik bir işlemdir: Client ID değiştirilir ve mevcut değeri kullanan entegrasyonlar çalışmaz. Devam edebilmek için ilgili kaydın adını yazmanız, Düzenle butonuna tıklamanız ve son soruyu ("Key'i değiştirmek istediğinizden emin misiniz?") onaylamanız istenir. Yeni anahtar taslak olarak tutulur; kaydedilmeden geçerli olmaz (Save ve key dialogunda onay; Cancel taslağı iptal eder); kayıttan sonra yeni anahtarların etkin olabilmesi için ilgili API Proxy, API Proxy Group veya Politika Grubu'nun yeniden yüklenmesi (redeploy) gerekir. Bu politikayı kullanan mevcut istemcilerin de yeni Client Id/Client Secret değerleriyle yeniden yapılandırılması gerekir.

Ekranlar Arası Tutarlılık​

Bu Client Id / Client Secret görüntüleme, kopyalama ve düzenleme deneyimi (Otomatik/Manuel seçimi, isim yazarak onaylama, son onay adımı dahil); API Proxy, Politika Grubu (Policy Group) ve API Proxy Group ekranlarındaki kendi anahtar yönetimi bölümleriyle birebir aynıdır. Bu JWT Kimlik Doğrulama Politikası bir API Proxy'nin, bir API Proxy Group'un veya bir Politika Grubu'nun politika listesine bağlandığında — global (paylaşılan) bir politika olarak seçilmiş olsun ya da o API/Grup'a özel yerel bir politika olarak oluşturulmuş olsun — politika formunda görünen API Anahtarını Göster seçeneği aynı deneyimi sunar.

Client Authentication — Authorization Basic Header Desteği (RFC 6749 §2.3.1)​

Örnek:

curl -u "my-client-id:my-secret" \
-d "grant_type=client_credentials" \
https://gateway.example.com/credential/token

Önemli Kurallar:

  • Çift gönderim yasağı: Aynı istekte hem Authorization Basic header'ı hem body'de client_id/client_secret parametreleri gönderirseniz, sunucu HTTP 400 (invalid_request) ile reddeder (RFC 6749 §2.3.1 "MUST NOT" kuralı).
  • Bozuk header işlemesi: Base64-decode edilemeyen veya eksik Basic header'lar HTTP 401 (invalid_client) ile reddedilir.
  • Diğer Authorization scheme'leri: Basic dışındaki yetkilendirme türleri (örn. Bearer, Digest) görmezden gelinir; bu durumda body parametreleri kullanılır.
  • Şifre ve kullanıcı adı: PASSWORD grant akışında username ve password her zaman request body'de gönderilir; Authorization header sadece client_id/client_secret için kullanılı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.

Hata mesajı yapılandırmasının tüm katmanları, öncelik sırası ve senaryo örnekleri için Hata Mesajı Yapılandırma Rehberi sayfasına bakın.

Tarayıcı ile Giriş (authorization_code)​

Bu Politikadan Yönet modunda politikaya Tarayıcı ile giriş (authorization_code) anahtarını açabilirsiniz. Anahtar açıkken standart bir OAuth2 istemcisi (örneğin Claude Code veya MCP Inspector) Apinizer'ı yetkilendirme sunucusu olarak kullanır. Kullanıcı gateway'in /auth giriş sayfasında oturum açar ve uygulama onun adına token alır. Seçili eski grant (client credentials veya password) çalışmaya devam eder.

  • Kullanıcılar politikanın kimlik kaynağından gelir: Secret Manager, LDAP, veritabanı veya API. Kimlik kaynağı OIDC ise anahtar kapalıdır.
  • Politikada Token Never Expires kapalı olmalı ve access token süresi sonlu olmalıdır. Refresh token'a izin veriyorsanız refresh süresi de sonlu olmalıdır. Tarayıcı girişi süresiz token vermez.
  • İstemci, uygulamaya ait bir API istemcisidir. client_id değeri bu istemcinin client kimliğidir. Uygulamanın proxy için ACL satırı da gerekir.
  • Anahtar yalnız API Proxy'nin kendi token politikasında kullanılabilir. Proxy grubu politikasında ve bir metodun politikasında kullanılamaz.
  • Anahtarı açtıktan ya da kapattıktan sonra politikayı kaydedin ve proxy'yi yeniden deploy edin. Anahtarı kapatırsanız tarayıcı girişiyle verilmiş token'lar hemen geçersiz olur.
  • Tüm worker'lar yükseltilmeden anahtarı açmayın.
  • ACL'den Yönet modunda anahtar görünmez. Bu modda tarayıcı girişi, uygulamaya ait API istemcisinde açılır.

Politika kaydedilirken şu hata mesajları görünebilir:

MesajAnlamı
Token politikasının grant listesi geçerli değil. Liste, seçili grant tipiyle aynı olan tek bir eski grant (client credentials veya password) içermelidir. Tarayıcı girişi (authorization_code) eklenebilir.Grant listesi geçersiz.
Bu politikada tarayıcı girişi (authorization_code) için access token süresi sonlu olmalıdır. Refresh açıksa refresh token süresi de sonlu olmalıdır.Süresiz token ayarı var.
Kimlik kaynağı OIDC ise tarayıcı girişi (authorization_code) kullanılamaz. OIDC sağlayıcısının kendi girişini kullanın.Kimlik kaynağı OIDC.
Tarayıcı girişi (authorization_code) API proxy'nin kendi token politikasının ayarıdır. Proxy grubu politikasında kullanılamaz.Politika bir proxy grubuna bağlı.
Tarayıcı girişi (authorization_code) API proxy'nin kendi token politikasının ayarıdır. Bir metodun politikasında kullanılamaz.Politika bir metoda bağlı.

Adım adım kurulum için MCP Gateway'e Keycloak Olmadan Tarayıcı ile Giriş senaryosuna bakın. Uç noktalar için Token Servisi sayfasına bakın.

Yetki Devri Token'larını Kabul Etme (Token Exchange)​

Yetki devri token'larını kabul et (token exchange) anahtarı, bir ajanın bu API proxy'yi bir kullanıcı adına çağırmasını sağlar. Ajan, token exchange ile aldığı token'ı kullanır. Anahtar varsayılan olarak kapalıdır. Anahtar kapalıyken politika yetki devri token'ını eskisi gibi reddeder. Doğrudan istemciler etkilenmez.

  • Anahtar hem ACL'den Yönet hem de Bu Politikadan Yönet modunda görünür. Kimlik kaynağı OIDC ise görünmez.
  • Anahtarı açtığınızda iki alan daha görünür.
  • İzin verilen ajanlar: Ajanların API istemcilerinin client ID değerlerini girin. Eski tüketici için kullanıcı adını girin. Değeri yazın ve Enter tuşuna basın. Liste boşsa hiçbir ajan kabul edilmez.
  • Yetki devri zinciri derinliği: Bir ajan veya En çok iki ajan seçeneğini seçin. Varsayılan değer En çok iki ajan seçeneğidir.
  • Gateway bu ayarı yalnız API proxy'nin kendi istek politikası listesindeki aktif JWT ve OAuth2 politikalarından okur. Metot, proxy grubu veya politika grubu içindeki politikaları okumaz.

Gateway, yetki devri token'ı için şunları denetler:

  • Token yalnız bu API proxy içindir. Audience değeri bu proxy'nin kanonik adresidir.
  • Zincirdeki her ajan İzin verilen ajanlar listesindedir. Zincir, seçilen derinlikten uzun değildir.
  • Her ajan hâlâ aktiftir ve token'ları iptal edilmemiştir.
  • Kullanıcı, istek kimliği olarak bu proxy'nin erişim denetimlerinden geçer. ACL denetimi açıksa kullanıcının ACL satırı gerekir.
  • İstek, kullanıcının güncel rolleriyle çalışır. Token'ın scope'u rolleri yalnız daraltabilir. OAuth scope adı olmayan rol taşınmaz.

Reddedilen token için gateway normal "token geçerli değil" yanıtını verir.

JWT politikası yetki devri JWT'lerini doğrular. OAuth2 politikası saklanan (opaque) yetki devri token'larını doğrular. Token exchange, hedef politikanın doğruladığı biçimde token verir. Ajan biçimi seçemez.

Daha fazla bilgi için Token Exchange (RFC 8693) bölümüne bakın.

Yalnızca Kimlik Modu (ACL Kapalı)​

İstemci için ACL Kontrol Et kapalıyken politika yalnızca kimlik modunda çalışır. Kimliği yine çözümler ve doğrular; ancak tüketicinin bu API Proxy veya Proxy Group için erişim listesini (ACL) kontrol etmez.

ACL kapalıyken yine uygulananlarACL kapalıyken atlananlar
Tüketici mevcuttur ve etkindir.
Tüketicinin organizasyonu ve üst organizasyonları aktiftir.
Tüketicinin geçerlilik süresi (expire date) dolmamıştır.
Tüketicinin sözleşmeleri bitiş tarihini geçmemiştir.
İstemci IP'si tüketicinin IP listesindedir (Validate Client Address açıksa).
API Client sahibi aktiftir.
Rol yetkilendirmesi (etkinse) ve Limit Plan kuralları uygulanır.
İstek doğrulanmış olarak işaretlenir ve çözümlenen kimlik trafik loguna yazılır.
Tüketicinin bu API Proxy veya Proxy Group için erişim satırı (süresi, ortam etkinleştirme anahtarı, izin verilmeyen method ve proxy'ler).
API Client aboneliği ve erişim izinleri (portal abonelikleri).
Bu bilgi erişim satırından geldiği için trafik logunda bu istekler için abonelik ürünü ve planı görünmez.
uyarı

ACL kapalıyken, kimlik kurallarını geçen ortamdaki her aktif tüketici API'yi çağırabilir. Proje sınırı yoktur.

Seçenek token uçlarına da uygulanır: PASSWORD grant için token üretimi aynı anahtarı izler.

bilgi

LDAP, Database, API ve OIDC kimlik kaynakları ACL'yi hiçbir zaman sorgulamaz. Bu kaynaklarda seçeneğin etkisi yoktur.

Bir API Product'ın güvenlik sekmesinde, ACL'si kapalı politika mevcut "Politikadan yönetiliyor" durumuyla raporlanır: kimlik doğrulama consumer store (ACL) yerine politikadan yönetilir, bu nedenle uygulama credential'ları orada yetkilenmez.

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 Politikayı API'ye Bağlama bölümüne bakabilirsiniz.

İleri Düzey Özellikler​

ÖzellikAçıklama ve Adımlar
Role Bazlı Header Enjeksiyonu- Authorization sekmesinden addRolesToHeader seçeneğini açın.
- Header adını belirleyin (örn. X-Authenticated-UserRoles).
- Roller JWT claim'lerinden hedef servise taşınır.
JWT Regenerator Service Entegrasyonu- Kimlik kaynağı olarak API seçildiğinde ikinci servis modalını açın.
- JWT yenileyici servisi seçin ve kaydedin.
- Password grant akışında refresh token kullanımıyla entegre çalışır.
Method Bazlı Yetkilendirme- Authorization sekmesinde Method Access özelliğini aktif edin.
- API method listelerini seçip rol eşleştirmesi yapın.
- İstekler yöntem bazında 403 ile reddedilebilir.

Best Practices​

Yapılması Gerekenler ve En İyi Uygulamalar​

KategoriAçıklama / Öneriler
Token Ömrü YönetimiKötü: Varsayılan süreleri her ortamda kullanmak.
İyi: Canlı Ortam için 15 dk, Geliştirme için 60 dk belirlemek.
En İyi: Kullanım metriklerine göre token süresini düzenli gözden geçirmek.
Refresh Token StratejisiKötü: Sınırsız yenileme hakkı tanımak.
İyi: 3 yenileme hakkı ve 24 saatlik süre kullanmak.
En İyi: MFA zorunlu oturumlarda refresh'i kapatmak.
Header KullanımıKötü: Varsayılan header isimlerini değiştirmeden bırakmak.
İyi: Hedef servisin beklediği header adlarını tanımlamak.
En İyi: Güvenlik taramasından geçen özel header adları kullanmak.
Grant Type SeçimiKötü: Tüm istemcilerde PASSWORD grant kullanmak.
İyi: Makine-makine iletişimde CLIENT_CREDENTIALS tercih etmek.
En İyi: Minimum yetki prensibiyle grant seçimini per istemci analizine dayandırmak.
Kimlik Kaynağı YönetimiKötü: Aynı anda birden fazla kimlik kaynağı tanımlamak.
İyi: Her grant tipinde tek kaynak seçmek.
En İyi: Secret Manager sürümleriyle uyumlu merkezi kimlik yönetimi kurmak.

Güvenlik En İyi Uygulamaları​

Güvenlik AlanıAçıklama / Uyarılar
Token SaklamaToken'ları tarayıcı localStorage yerine Secure Cookie'de saklayın; HttpOnly ve Secure bayraklarını zorunlu tutun.
İmza AlgoritmasıRS256 dışına geçerken IM sertifika yönetiminin hazır olduğundan emin olun; anahtar rotasyonunu planlayın.
Refresh Token KorumasıYenileme uç noktalarını IP ve cihaz doğrulamasıyla sınırlayın; başarısız girişimleri loglayın.
Header Hijacking ÖnlemleriClearAuth özelliğini legacy token geçişlerinde aktif edin; karışık kimlik doğrulama zincirleri oluşturmayın.
Audit ve İzlemePolitika loglarını SIEM'e aktarın; grant tipine göre başarısız girişleri ayrı dashboard'larda izleyin.

Kaçınılması Gerekenler​

KategoriAçıklama / Uyarılar
Sınırsız Token ÖmrüNeden kaçınılmalı: Güvenlik ihlallerinde kalıcı yetki sağlar.
Alternatif: Token sürelerini ortam bazlı kısaltın.
URL Parametresiyle Token TaşımaNeden kaçınılmalı: Loglarda token sızıntısına yol açar.
Alternatif: Header veya Authorization Bearer kullanın.
Ortak Kimlik KaynağıNeden kaçınılmalı: Üretim ve test kimlikleri karışabilir.
Alternatif: Her ortam için ayrı Secret Manager domaini kullanın.
Yetkisiz Refresh ServisiNeden kaçınılmalı: Yenileme endpoint'i ele geçirilebilir.
Alternatif: JWT Regenerator servisini sadece güvenli ağ segmentlerinden erişilebilir kılın.

Performans İpuçları​

KriterÖneri / Etki
Token Hesaplama SüresiÖneri: RS256 tercih edip anahtar boyutunu gereksiz büyütmeyin.
Etki: JWT üretimi milisaniyeler seviyesinde kalır.
Refresh ÇağrılarıÖneri: Yenileme sayısını sınırlayın, gereksiz round-trip'i azaltın.
Etki: Gateway throughput'u artar.
Kimlik Kaynağı Yanıt SüresiÖneri: LDAP/API kaynaklarını Cache ile destekleyin.
Etki: Throttling tetiklenmeden yüksek TPS yönetilir.
Header BoyutuÖneri: Rol listelerini minimal tutun, gereksiz claim aktarmayın.
Etki: Upstream servilerine giden header yükü azalır.
Koşul DeğerlendirmesiÖneri: Query Builder kurallarını optimize edin; gereksiz regex kullanmayın.
Etki: Politika değerlendirme süresi düşer.

Sık Sorulan Sorular (SSS)​

KategoriSoruCevap
GenelPassword grant kullanan politikada kimlik kaynağı olmadan kayıt yapabilir miyim?Hayır. PASSWORD seçiliyken bir Identity Role Group veya Secret Manager bağlantısı zorunludur; aksi halde politika Validation hatası verir.
GenelToken Never Expires seçeneği ne zaman kullanılır?Sadece makine-makine iletişiminde ve güvenliği başka katmanların sağladığı durumlarda önerilir; kullanıcı tabanlı erişimlerde risklidir.
TeknikJWT Regenerator Service API zorunlu mudur?Sadece kimlik kaynağı API seçildiğinde ve refresh token senaryosunda gereklidir; diğer kaynaklarda otomatik olarak pasif kalır.
TeknikHeader'a eklenen rol listesi nasıl belirlenir?Authorization Configuration alanında seçilen rol/claim eşleştirmeleri doğrultusunda addRolesToHeader aktifken otomatik yazılır.
KullanımGlobal politikayı local kopyaya dönüştürmek için ne yapmalıyım?Detay sayfasından [Localize] butonunu kullanın; politika yeni bir local sürüme kopyalanır ve düzenlenebilir hale gelir.
KullanımPolitika ismi çakışırsa nasıl ilerlerim?Sistem name-exist kontrolüyle uyarır; ismi değiştirin veya global politikayı localize ederek benzersiz ad verin.