msHOWTO

22 Şubat 2016 Pazartesi

Central Authentication Service Entegrasyonu (CAS)


Central Authentication Service Entegrasyonu (CAS)
·         CAS Nedir ?
CAS Single Sign-On hizmetini sağlayan open source bir sistemdir.Birden fazla sistemi CAS ile entegre edip merkezi bir authentication sağlayabilirsiniz. Böylelikle n tane sistem tek bir yerden authentication işlemi yapar ve n tane sistemi tek bir kez authentication işleminden sonra kullanabilirsiniz.
·         CAS Mimarisi

Aşağıdaki Şekil 1 resminde de detaylı incelendiğinde CAS mimarisinin adımları aşağıdaki maddelerde anlatıldığı gibi olduğu görülebilir.
o   Uygulama Get olarak server dan user tarafından çağırılır,
o   Sunucu response olarak CAS ın bulunduğu linkin login sayfasını service parametresi ile birlikte çağırır. Bu service parametresinde kullanıcı CAS üzerinden login olduktan sonra CAS’ın gelen isteği hangi sayfaya yönlendireceğinin bilgisi olmalıdır,
o   Kullanıcının karşısına CAS login ekranı gelir ve kullanıcı login olur,
o   Login işleminden sonra CAS authentication işlemini yapar ,
o   Bir sonraki adım olarak service parametresi olarak verilen linke GET olarak sonuna ticket queryString ini ekleyerek yönlendirme yapar. Bu yonlendırmeden once yapılacak olan isteğin içerisine CASTGC cookie’sini ekler,
o   Daha sonra CAS’ın yönlendirme yaptığı sayfa içerisinde istek ile gelen ticket querystring i ile birlikte CAS’a Get olarak “casserverlink/serviceValidate?ticket=…&service=…”  istek yapılır ve CAS üzerinden gelen ticket bilgisinin validation işlemi yapılır.
o   Bu işlemden sonra CAS’dan xml olarak gelen kullanıcı bilgileri içerisindeki bilgiler alınır ve Cookie lere JSESSIONID olarak asp sessionID atılır,
o   Bu aşamadan sonra artık kullanıcının authentication işlemi tamamlanır.
o   Bir başka uygulamaya ilk erişiminde ise 5.aşamada cookie’ye atılan CASTGC bilgisi request’in cookie bilgisine eklenerek CAS uzerınde validate yapılır ve CAS yeni bir ticket üretir ve querystring ile bizim querystring olarak verdiğimiz service bilgisindeki linke yönlendirme yapar,
o   Yeni oluşan ticket bu şekilde alındıktan sonra 6. Aşama tekrarlanır,



Şekil 1


Asp.Net web form projelerinde CAS 2.0 entegrasyonu çok sıkıntılı bir süreçtir. Asp.Net web form uygulamalarında bulunan page life cycle nedeni ile kullanıcının ilk yaptığı istek CAS'a yapılan yönlendirmeden sonra kaybolmaktadır. Bu durum CAS'ın hazırladığı .Net Library kullanıldığında oluşur. Bu nedenle eğer Asp.Net web form uygulaması ile CAS entegrasyonu yapıyorsanız malesef yapamayacaksınız. İnternet üzerinde CASP.cs class'ına rahatlıkla erişip onun üzerinden işlemlerinizi yapabilirsiniz. Bu class içerisindeki Authenticate methodunu kullanarak authentication işlemini gerçekleştirebilirsiniz. Fakat CAS'ın resmi sitesindeki dökümanları incelediğinizde de göreceksiniz ki CAS tarafından oluşturulan ticket sadece 1 kez validate ettirilir. Bu nedenle bir kez validate işlemi yapıldıktan sonra asp.net uygulamnızda kullanıcı bilgilerini session üzerinde tutarsanız CAS üzerinden kullanıcı login ve validation işlemini yapmış olursunuz. Fakat Bu senaryoda ise kullanıcı CAS uzerınden logout olduğunda , sizin uygulama üzerinde kullanıcı bilgileri session da tutulduğu için single sign out olarak ayarlayamacaksınız. Malesef bu durumu göze almak zorundasınız. 

Uygulamanız üzerinden logout olunduğunda CAS üzerinde de logout olması için tek yapmanız aşağıdaki link'e redirect yapmanız yetecektir.

casserverlinki/logout 

Umarım faydalı olmuştur. Bir sonraki makalemizde görüşmek üzere.