Masaüstü ve ya kişisel uygulamalar için yetkilendirme önemli
olmasa da, çok kullanıcılı web projelerinde yetkilendirmelerin doğru şekilde
yapılması, kullanıcıların ve ya kullanıcı gruplarının hangi servislere,
metotlara erişebileceğini düzenlemek çok önemlidir. Proje geliştirme metodundan
bağımsız olarak yetkilendirme yapısının, proje başlangıcında doğru bir şekilde
yapılandırılması gerekiyor. Örneğin proje geliştirme metodolojisi olarak Agile
kullanıyor olsanız bile proje başlangıcında yetkilendirme yapısını oluşturmak
çok önemlidir. Hatta kendi firma veya organizasyon yetkilendirme yapınızı
oluşturmak proje başlangıç sürecinde işlerinizi çok kolaylaştıracaktır.
Özellikle yazılımların çok hızlı üretilmesi gerektiği durumlar için hazır yetkilendirme
yapısının olması işinizi çok kolaylaştıracaktır. Kendi yetkilendirme yapınızı
oluşturuyorsanız bu yapının da evrensel olması, yani tüm projelere
uygulanabilir olması çok önemlidir. Bu makalemde, tüm projelere uygulanabilir
ortak bir yetkilendirme yapısının oluşturulması konusunu anlatacağım. Amacım Authentication
ve Authorization işlemlerinin uygulanmasını anlatmak değil. Bu makalenin temel
amacı Authorization işlemi için altyapının hazırlanmasıdır. Hangi ortamda veya
hangi programlama dili kullandığınızdan bağımsız olarak tüm programlama
dillerinin altyapısında bu iki işlemi de destekleyen yapı mevcuttur. Bu yapılar
küçük projeler için geçerli olsa da evrensel boyutta, tüm projelere
uygulanabilir değildir.
Doğru
yetkilendirme işlemleri için önemli nokta kullanıcı ve kullanıcı grubu yetkilendirmesinin
uygulanabilir olmasıdır. Örneğin on bin, yüz bin veya milyonlarca kullanıcınız
olduğunu düşünün. Bu sayıda bir kullanıcı kitlesinin yetkilendirmesini tek-tek
yapmak imkansızdır. Bu yüzden kullanıcı grubu tanımlaması önemlidir. Aynı
zamanda özel kullanıcıları da düşünürseniz bazı kullanıcılara özel yetkiler
vermek isteyebilirsiniz. Bu durumda da kullanıcı bazlı yetkilendirme yapısının
olması çok önemlidir. Burada anlatmak istediğim konu yetkilendirme işleminin
kullanıcı bazlı ve kullanıcı grubu bazlı yapılabilir olmasının tüm projeler için ihtiyaç olduğudur. Sınırları kesin olan projelerde bile, öyle bir durum oluşabilir ki, kullanıcı
bazlı yetkilendirme yapmak zorunda kalabilirsiniz. Örneğin misafir kullanıcılar
için yeni kullanıcı grubu oluşturabilirsiniz, ama 1 kişiye vereceğin
yetkilendirme için ayrı bir kullanıcı grubu oluşturmak belirli bir süre sonra
projenizin kontrolünü zorlaştırır. O yüzden projelerde doğru yetkilendirme için, kullanıcı bazlı yetkilendirme ve
kullanıcı grubu bazlı yetkilendirme yapılabilmelidir. Bu işlemler için
kullandığınız programlama diline uygun yapıyı kullanmak size kalmış. Kullanıcı
grubu tanımlamaları için enumlar kullanabilirsiniz veya direk veri tabanına
kullanıcı gruplarını, yetkileri yazıp Authorization işlemi yaparken
doğrulatabilirsiniz. Örneğin veri tabanında işlem yetkilendirmelerini yazarken
kullanıcı grubu yetki yerine, kullanıcı yetki yazarak çözüm üretebilirsiniz. Bu veri tabanında daha fazla kayıt olmasına, sorgulama işleminin daha uzun sürmesine de neden olabilir. O yüzden benim kullandığım yöntem kullanıcı grubu yetki, ve kullanıcı yetki gibi bir yapıyı kullanmayı sizde de kendi projelerinize uygulayabilirsiniz. Bu
makalenin temel amacı zaten doğru yetkilendirme mantığını anlatmak. Buna uygun çözümler üretebilecek
kapasitede olduğunuzu düşünüyorum…
Son olarakta CMS yazılımlarına değineceğim. Web projeleri için
CMS yazılımları kullanıyorsanız, bu yazılımların çoğunun kendi yetkilendirme
yapısının olduğunu görebilirsiniz. Eğer proje için CMS yazılımlarından birini
kullanıyorsanız, bu yazılımların altyapısındaki yetkilendirme yapısını
kullanmanız tavsiye ederim. Hatta CMS seçimi yaparken de, yetkilendirme yapısını inceleyerek seçim yapın.
Özetleyecek olursak ve tecrübeme dayanarak söylüyorum ki kullanıcı ve kullanıcı grubu yetkilendirmesini birlikte kullanmalısınız. Eğer projeye yeni başlıyorsanız bu teknikleri kullanın. Eğer projeniz belirli bir noktaya gelmiş ve kullanıcı ve kullanıcı grubu yetkilendirmesi yoksa mümkün olduğunca anlattığım şekilde bir yetkilendirme yaparsanız, projenin geleceği için doğru bir seçim yapmış olursunuz...
Yorumlar
Yorum Gönder