Merhaba sevgili okurlar. Bu ayki yazım benim çalışırken karşılaştığım
bir ihtiyacın çözümüyle ilgili.
Büyük şirketlerde çalışanların kullandığı onlarca yazılım olabilir. Bu
yazılımlara örnek izin takibi, insan kaynakları, proje yönetimi veya raporlar
için kullanılan programlar olabilir. Bu programları kullanabilmek için bir
kullanıcı adınız ve şifreniz olmalı. Bu bilgiler ile sisteme giriş yaparsınız.
Genelde her program için ayrı bir kullanıcı adı-şifre kombinasyonu kullanılır;
bu çöplük içerisinde kullanıcıların hangi şifrenin hangi programa ait olduğunu
hatırlaması zordur. Bizden bu soruna bir
çözüm getirmemiz istendi, yani ortak bir kullanıcı adı-şifre olması ve tüm
programlarda bunun kullanılması gerekiyordu.
Ortak şifre için düşünülen çözüm şöyle oldu: Şirkette tüm bilgisayarlar
bir domain’ e bağlı ve her kullanıcının bu domain’ de kullanıcı bilgileri var.
Bu bilgileri kullanırsak kullanıcılar bilgisayarlarını açarken kullandıkları
şifrelerini tüm programlar için de kullanabilir ve bu sorunu çözmüş oluruz. Bu
çözüme karar verdikten sonra yapmamız gerekler active directory’ e bağlanıp
kullanıcı adı ve şifre sorgulaması yapmak ve tüm sistemlere bunu entegre etmek,
tabii ortak bir veritabanı tablosunda active directory kullanıcılarının tüm
yazılımlardaki primary key değerlerini tutmak. Her programa hem active
directory hem de bu veritabanına bağlantı fonksiyonlarını eklemek büyük bir
sorun. Bazı sistemler taşeron ekipler tarafından yürütülüyor ve bu kodlardaki
özel bilgilerin bu kişilere verilmesi imkansız. Bu soruna çözüm olarak ya bir
dll yani jar ya da bir web servisi yazmalıydık. Ben web servisi yazmanın daha
güvenli olduğuna karar verdim çünkü jar dosyaları decompile edilebilir ve
içeriğine ulaşılabilir. Peki nedir web servisleri?
Web servisleri XML tabanlı çalışan platform bağımsız yapılardır. Web
servislerinin sahip olduğu fonksiyonlara uzaktan erişebiliriz, gerekli
parametreleri gönderip sonuçlar alabiliriz. Teori kısmını atlayıp size bir web
servisinin kurulumunu anlatacağım. Sahip olduğum IDE Netbeans 6.7 ve web server
olarak Apache Tomcat kullanıyor olacağım. Web servisi için gerekli
kütüphaneleri http://cxf.apache.org/ adresinden
indirebilirsiniz.
Buradan sonra ilk olarak aşağıdaki gibi bir web.xml dosyasını
düzenliyoruz.
Web xml’ i düzenledikten sonra bir interface oluşturuyoruz. Bu
interface bizim servis içinde kullanacağımız metotları içerecek.
Şimdi de LoginService interface’ini
implemente eden servisimizi yazıyoruz.
Bu servisin kullandığı activeDirectoy classını daha sonra yazacağız. Bu
class’ ın içinde active directory kodlarını yazmamız iyi bir tasarım olmazdı.
Servisimizi oluşturmak için son olarak service.xml dosyasını oluşturuyoruz ve
Login paketi içine koyuyoruz.
Artık servisimiz hazır. Son olarak Can Çobanoğlu arkadaşımın
geliştirdiği activeDirectory class’ını ve ona bağlı classları projeme
ekliyorum.
Artık size gönderdiğiniz kullanıcı adı ve şifre parametrelerine göre
bunların doğru olup olmadığını söyleyen bir web servisiniz var. Ben bu servise
ek olarak, bir veritabanı tablosunda her kullanıcının diğer yazılımlardaki
kullanıcı adı ya da id’ sini tutuyorum. Bu şekilde parametre olarak hangi
yazılım için kullanıcı adı istediğimi de gönderip tüm yazılımlar için ortak bir
sistem oluşturdum. Hatalı giriş olursa dönen sonuç null olacak. İşte servisin
görünümü.
Bu servisi projenize eklemek için projenize sağ tıklayıp “add web
service” i tıklamalısınız. Bundan sonra servise girdiğinizde görecek olduğunuz
WSDL adresi ile servisi projenize eklemiş olacaksınız. Bundan sonra bir
fonksiyonun içinde sağ tıklayıp “insert code”
dedikten sonra “web service operation” ı seçerek web servisinin login
fonksiyonuna erişebilirsiniz.
Böyle bir servisin faydalarından bir diğeri ise hangi kullanıcının
hangi saatlerde hangi sisteme girdiğini rahatlıkla kayıt altına alabilmenizdir.
Bu web servisine bir flood engelleyici de eklerseniz en tehlikeli güvenlik
açığını da kapatmış olursunuz. Umarım bu yazım sizin için faydalı olmuştur.
Okuduğunuz için teşekkür ederim.