REST API’ye LDAP Provider Aracılığıyla Plain-Text Authentication Poliçesinin Uygulanması
Bu senaryoda Swagger PetStore isimli REST mimaride oluşturulmuş bir API'ye, Plain-Text Authentication poliçesinin uygulanması test edilecektir.
Aşağıdaki grafikte yer alan numaralandırmalar işlemlerin yapılış sırasına aittir.
- Apinizer içerisinde yer alan Security Manager, API Client'tan Plain-Text türünde authentication bilgisini ister.
- Authentication bilgileri LDAP üzerinden kontrol edilmek üzere gönderilir.
- LDAP'tan Apinizer'a authentication bilgileriyle ilgili cevap döner. Bu authentication doğru ise dört numaralı alana geçiş yapılır.
- Apinizer, Backend API'ye istekte bulunur.
- Backend API, Apinizer'a yanıt verir.
- Apinizer, API Client'a yanıt verir.
API Proxy'nin Oluşturulması
Swagger Petstore isimli REST API'ye https://petstore.swagger.io/ adresinden erişim sağlanabilmektedir.
İlk olarak bu adresin API Proxy olarak tanımlanması gereklidir.
Bunun için Development menüsü altında yer alan API Proxies seçeneğine tıklanır.
Açılan sayfada daha önceden herhangi bir proxy tanımı yapılmadığı için No records found! yazısı yer alır.
Burada sağ üst köşede yer almakta olan Create butonuna tıklanır ve yeni bir proxy oluşturmaya başlanır.
Bu kısımda oluşturulacak olan API Proxy'nin hangi tipte olduğunun seçilmesi gerekmektedir.
Bu senaryoda kullanılacak olan API'nin türü Swagger 2.X olacağı için bu tür seçilir.
Enter URL ifadesine tıklanarak kullanılacak olan API'nin adresinin girileceği ekrana geçiş yapılır.
Aşağıdaki görselde de görüldüğü üzere URL kısmına erişim sağlanacak adres girilerek Parse butonuna tıklanır.
Parse işlemi yapıldıktan sonra ise aşağıdaki görselde yer alan ekran gelmektedir.
Bu ekran üzerinden API Proxy'ye ait ayarlar yapılabilmektedir.
- Usage alanı ile oluşturulan API Proxy'nin kim tarafından kullanılacağı belirtilir. Burada publisher, consumer, publisher and consumer gibi seçenekler yer almaktadır.
- Sharing Type alanı ile oluşturulan API Proxy'nin paylaşım tipi belirtilir. Burada external, internal, external and internal gibi seçenekler yer almaktadır.
- Addresses sekmesi altında yer alan iki API adresinden biri veya her ikisi de seçilebilir eğer iki adres de seçilecek olursa Apinizer Load Balance işlemini kendisi gerçekleştirecektir.
- Relative Path ise oluşturulan API Proxy'nin erişime açılacak adresidir.
- Category List alanı da oluşturulan API Proxy'nin kategorilendirilmesine olanak sağlar.
- Bu ayarlamalar yapıldıktan sonra API Proxy kaydedilir.
Kaydetme işleminden sonra ise açılan sayfada Develop sekmesine tıklanır.
Burada REST API' ye ait endpointler listelenmektedir.
- Bu endpointlerin üstünde yer almakta olan All ifadesiyle eklenecek poliçeler tüm endpointlere uygulanabilmektedir.
- Oluşturulan API proxy deploy edilir. Bunun için yukarıda orta kısımda yer alan Deploy butonuna tıklanır.
- Sırada bu işlemde senaryo gereği kullanılması gereken LDAP/Active Directory yapısının kurulması adımı vardır.
- Poliçe olarak eklenecek Plain-Text Authentication yapısı içerisinde yer alan username ve password gibi bilgileri LDAP/Active Directory sunucusundan elde edilebilir.
- İlk olarak LDAP/Active Directory yapısının kurulumu gerçekleşir.
LDAP/Active Directory Bağlantısının Gerçekleştirilmesi
- Connection Management menüsü altında yer alan LDAP/Active Directory menüsüne tıklanır.
- Daha önceden herhangi bir LDAP/Active Directory tanımı gerçekleştirilmediği için bu sayfada There is no LDAP/Active Directory yazısı yer almaktadır.
- LDAP/Active Directory bağlantısını oluşturmak için sağ üst köşede yer alan Create butonuna tıklanır.
Bu ekran üzerinde yer alan ifadeler tek tek incelenecek olursa,
- Name alanı ile oluşturulan bağlantının ismi ifade edilir.
- Server Address alanı ile bağlanılacak olan LDAP/Active Directory sunucusunun adresi yazılır.
- Description ifadesi ile oluşturulan bağlantıya açıklama eklenebilir.
- Certificate Status alanı ile LDAP bağlantısı için gerekli olan sertifika seçilir veya yeni bir sertifika oluşturulur.
- Username alanı ile bağlantı esnasında kullanılacak olan kullanıcı adı bilgisi , Password alanı ile de bağlantı esnasında kullanılacak olan parola girilir.
- Base DN alanı ile de bağlantısı sağlanacak olan LDAP'ın temel dn adresi belirtilir.
- Test Connection butonu ile LDAP/Active Directory bağlantısının çalışıp çalışmadığı kontrol edilir.
Yukarıda belirtilen alanlar senaryoda kullanılacağı şekilde doldurulur.
Test Connection butonuna tıklanarak test işlemi gerçekleştirilir, Save and Deploy butonuna tıklanarak da işlemler kaydedilir.
Kayıt işlemi gerçekleştikten sonra ise aşağıdaki görselde yer aldığı gibi oluşturulan bağlantı görüntülenir.
Authentication Poliçesinin Oluşturulması
API proxy'lerin listelendiği sayfaya gidilir ve buradan Swagger Petstore isimli proxy seçilir.
Daha sonra ise Develop sekmesine gelinir, Add Policy butonuna tıklanır.
Açılan sayfada Plain-Text Authentication poliçesi seçilir.
Bu ekran üzerinde yer alan ifadeler tek tek incelenecek olursa,
- Identity/Role/Group Service alanında seçilecek olan değer LDAP değeridir. Çünkü authentication kontrolü LDAP/Active Directory içerisinde yer alan yapı tarafından gerçekleştirilecektir.
- LDAP değeri seçildiğinde daha önceden oluşturulan LDAP bağlantısı seçilmelidir.
- Variable for username ve variable for password ifadeleri ile de kullanıcı adı ve parola bilgisinin hangi değişken ile alınacağı seçilir. Bu senaryoda bu değerler header içerisinden alınacaktır.
- Clear Authentication Information seçeneği seçilirse gelen mesaj içerisinde authentication bilgisi silinir.
- Add Client Info To Header seçeneği backend API'ye gidecek Header içerisinde istemciye ait bilgilerin bulunup bulunmayacağını belirtir.
- Bu seçenek aktif duruma gelirse Authenticated User Header Name isminde başka bir parametre ortaya çıkmaktadır.
- Burada yer alan X-Authenticated-UserId ifadesi ise backend API'ye gidecek olan istemci bilgisinin hangi başlık ismi ile gideceğini belirtmektedir.
- Yapılan değişiklikler sağ üst köşede yer alan Save butonuna tıklanarak kaydedilir.
Poliçe kaydolduğu zaman kırmızı dikdörtgen içerisine alınmış ikon görülmektedir.
Yapılan işlemin geçerli olması için proxy'nin Redeploy olması gerekmektedir.
Şimdi proxy'nin içerisinde yer alan metotların test işlemi gerçekleştirilebilir.
API Proxy'nin Test Edilmesi
/pet/{petId} endpoint'ini seçtikten sonra, Test Endpoint butonuna tıklanır.
URL' de istenilen petId değeri 2 olarak girilir, Send butonuna basıldığında dönen yanıtın bir hata mesajı olduğu ve bu hatanın da uygulanmış olan Plain-Text Authentication ile alakalı olduğu görülmektedir.
Çünkü header'ın içerisine hiçbir şekilde bir authentication bilgisi yerleştirilmemiştir.
Bu sefer header içerisine username ve password ifadeleri girilip testi yeniden gerçekleştirilir.
Backend API'ye gönderilecek olan headers içerisinde username = user.9 ve password = Apinizer.1 değerleri girilir.
Send butonuna tıkladığında alınan cevap görsel üzerinde aşağıda yer alan dikdörtgen içerisindeki ifadedir.