Ana içeriğe atla

REST API’ye Security Manager 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. Bu authentication doğru ise iki 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.
Senaryo Diyagramı

API Proxy’nin Oluşturulması

Senaryo Diyagramı Swagger Petstore isimli REST API’ye https://petstore.swagger.io/ adresinden erişim sağlanabilmektedir. 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.
Sağ üst köşede yer almakta olan Create butonuna tıklanır ve yeni bir proxy oluşturulmaya başlanır. Senaryo Diyagramı 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. Senaryo Diyagramı URL kısmına erişim sağlanacak adres girilerek Parse butonuna tıklanır. Senaryo Diyagramı Parse işlemi yapıldıktan sonra 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.
Senaryo Diyagramı Bu ayarlamalar yapıldıktan sonra API Proxy kaydedilir. Kaydetme işleminden sonra açılan sayfada Develop sekmesine tıklanır. Senaryo Diyagramı
Bu endpointlerin üstünde yer alan All ifadesiyle eklenecek olan 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. Senaryo Diyagramı

Credentials Oluşturulması

Eklenecek Credential’a ait bilgiler username = apinizer, password = 123123aA olacak şekildedir. Bunun için Identity Management menüsüne gelinir. Burada ise Credential Management menüsü altında yer alan Credentials menüsüne tıklanır. Senaryo Diyagramı Açılan ekranda sağ üst köşede yer alan Create butonuna tıklanır. Senaryo Diyagramı Burada gerekli olan alanlar daha önceden belirtilen bilgilerle doldurulur ve Save and Deploy butonuna tıklayarak oluşturulan credential kaydedilir. Senaryo Diyagramı Bu credential öğesinin erişim sağlayacağı proxy’nin seçilmesi gerekmektedir. Oluşturulan credential’ın üzerine gelip yanda yer alan menüden Edit seçeneğine tıklanır. Senaryo Diyagramı Açılan ekran üzerinden API Proxy ACL sekmesine tıklanır, bu sekme içerisinde yer alan butona tıklanır. Senaryo Diyagramı Açılan sayfada şu an üzerinde çalışılan projede bulunan API Proxy’ler listelenmektedir. Swagger Petstore isimli proxy seçilir. Add butonuna tıklayarak oluşturulan Credential öğesinin bu proxy’ye erişimi olacağı belirtilir. Senaryo Diyagramı Sağ üst köşede yer alan Save and Deploy butonuna tıklanır ve yapılan işlem kaydedilir.

Authentication Poliçesinin Eklenmesi

Artık Plain-Text Authentication poliçesi eklenebilir duruma gelmiştir. 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. Senaryo Diyagramı Bu ekran üzerinde yer alan alanlar:
  • Identity/Role/Group Service alanında seçilecek olan değer Security Manager değeridir. Çünkü credentials kontrolü Security Manager tarafından gerçekleştirilecektir.
  • 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. Bu ayarın aktifleştirilmesi özel bir durum olmadığı sürece her zaman tavsiye edilmektedir.
  • 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.
Senaryo Diyagramı
Poliçe kaydolduğu zaman ilgili ikon görülmektedir.
Yapılan işlemin geçerli olması için proxy’nin Deploy olması gerekmektedir. Senaryo Diyagramı

API Proxy’nin Test Edilmesi

“/pet/ endpoint’i seçildikten sonra, Test Endpoint butonuna tıklanır. Senaryo Diyagramı URL’de istenilen petId değeri “1” olarak girilir, Send butonuna basıldığında dönen yanıtın bir hata mesajı olduğu görülmektedir. Senaryo Diyagramı
Bu hatanın 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 test yeniden gerçekleştirilir. Backend API’ye gönderilecek olan headers içerisinde username = apinizer, password = 123123aA değerleri girilir. Send butonuna tıklandığında başarılı cevap alınır. Senaryo Diyagramı