Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Turhal Temizer
Turhal Temizer
http://www.turhaltemizer.com
İletişme geçmek için tıklayın.
92 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: [Authorize] Asp.Net Asp.Net MVC aspnetdb Authorization Authorize güvenlik membership MVC New Login SQL Login ASP.NET Turhal Temizer
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : ASP.NET
Yayınlanma Tarihi : 5.10.2009
Okunma Sayısı : 38415
Yorum Sayısı : 4     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 21.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 21.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 21.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Asp.Net MVC Framework - Güvenlik (Authorization)
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Asp.Net MVC Framework ile neler yapabileceğimizi incelemeye Authentication konusuna değinerek devam ediyoruz. Web sayfalarının güvenliği denildiğinde akla gelen ilk iki sözden biridir Authentication. Son kullanıcıya gösterilecek olan sayfaların kimler tarafından görüntülenebileceği hangi roller yardımı ile görüntülenebileceği konusunda yapılan güvenlik işlemlerine denmektedir. Tabii web uygulamalarında bu kadar sık kullanılan bu işlemin (hatta olmazsa olmazlarındandır) MVC Framework ile hazırlanan uygulamalarda olmaması beklenemezdi. Authentication edilmiş olan kullanıcıların sayfaları görüntülerden nasıl etkiler alabileceğini ve Controller katmanında bu kontrolleri temel anlamında nasıl yapabileceğimizi açıklayacak olduğumuz bu yazı ile güvenlik konusuna da giriş yapmış oluyoruz.

Web Site Administrator Tools Kullanımı

Güvenlik konulu yazımızı incelerken ilk olarak yapılması gereken web sayfasını görüntüleyebilecek yetki seviyelerine ilişkin kişileri ve rolleri oluşturmak olacaktır. Hepimiz alışık olduğu gibi Visual Studio ortamında geliştirilen web uygulamalarında Asp.Net Configuration seçeneği yer almaktadır. Bunun yardımı ile web uygulamaları ile ilgili temel işlemlerin yapılabilmesi mümkündür. Ayrıca bu ekranın içerisinde karşımıza çıkan ekrana en genel anlamda Web Site yönetim aracıda denilmektedir. bu ekranı açabilmek için projenin içerisinde yer alan web uygulamasına bir kez tıklama yapıldıktan sonra üst tarafta beliren asp.net configuration seçeneğine tıklıyoruz.



Açılan Web site yönetim aracından güvenlik sekmesine tıkladıktan sonra yeni kullanıcı oluştur linkine tıklayarak site içerisinde belirti bir role sahip olacak olan kullanıcı oluşturuyoruz.

Not: Sizlerin oluşturmuş olduğu web uygulamalarında eğer ki güvenlik sekmesine tıkladığınızda eğer ki veri kaynağını seçiniz şeklinde bir mesaj alıyorsanız bu web.config dosyanızın düzenlenmemiş olmasından olma ihtimali yüksektir. Bu durumda web site yönetim aracı sayfasını kapattıktan sonra MVC uygulamanızı bir kez çalıştırdıktan sonra tekrardan bu ekrana girerseniz sorunsuzca işlemleri yapabiliyor olabileceksiniz.



Kullanıcıyı sorunsuzca oluşturduktan sonra bu kullanıcıya bir rol atama işlemini yapalım.  Bunun için ilk olarak güvenlik sekmesi içerisinde yer alan rolleri aktifleştir (enabled roles) linkine tıkladıktan sonra yeni bir rol oluştur (Create or Manage roles) linkine tıklayarak yeni bir rol oluşturuyoruz.



Not: Eğer ki rol oluştururken Asp.Net SQL Role Provider içeren bir hata alırsanız Provider sekmesi içerisinde yer alan linklerden yararlanarak bu sorunu gerekli provider leri test ederek sorunu çözebilmeniz mümkündür.

Sorunsuzca rolü de oluşturduktan sonra bu rolü de kullanacak bir kullanıcı daha oluşturalım. Bunun için tekrardan yeni kullanıcı oluşturduğumuz ekrandan yararlanıyoruz. Yalnızca sağ tarafta yer alan roller bölümünden oluşturduğumuz rolü de seçtikten sonra kullanıcıyı oluştur butonuna tıklıyoruz.



Bu işlemde sorunsuz bir şekilde tamamlandı. Buraya kadar yaptıklarımıza kısaca özetlemek gerekirse, sertur ve turhal isimli iki kullanıcı oluşturduk. Ayrıca yonetici isimli bir tane de rol oluşturduk. Sonrasında turhal isimli kullanıcı yonetici rolüne atandı.

Authorization Gerekliliği

Site içerisinde kullanılan kimlik denetimlerine uyumlu kullanıcıları seçme işlemini Authorization ile gerçekliyoruz. Authorization işlemini kullanmak için Controller içerisinde yer alan action 'ların üst kısmına ekleyecek olduğumuz [Authorize] özniteliği yardımı ile sağlıyoruz.

Bu işlemi kısaca örneklemek gerekirse HomeController sınıfının içerisine SirketGuvenligi isimli yeni bir action ekliyerek buna [Authorize] özniteliğini ekleyerek kullanılabilmesine olanak tanıyoruz.

Controller\HomeControllers.cs
using System.Web.Mvc;

namespace Security1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            return View();
        }

        public ActionResult About()
        {
            return View();
        }

        [Authorize]
        public ActionResult SirketGuvenligi()
        {
            return View();
        }
    }
}

Eğer ki web sayfasında kullanıcı girişi yapılmadan adres çubuğuna /Home/SirketGuvenligi adresine giriş yapılmak istenirse, buna izin vermeyecek ve kullanıcı giriş ekranına yönlendirecektir. Bu ekran üzerinde de yeni bir kullanıcı oluşturulabilmesi imkanı vardır.



Ekran görüntüsünde de görüldüğü gibi girişe izin verilmemektedir. Eğer o kişinin kullanıcı adı ve şifresi varsa giriş yapabilecektir. Aksi durumda ise yeni bir kullanıcı oluşturarak yine bu sayfaya girebilmesi mümkün olacaktır. Şimdi herhangi bir kullanıcı ile web uygulamasına giriş yapıyor ve /Home/SirketGuvenligi isimli sayfaya giriş yapmayı deniyoruz. Bu durumda karşımıza aşağıdaki gibi bir sonuç çıkacaktır.



Sonuç istediğimiz gibi artık web sayfasına üye olmayan kullanıcılar bizim yetki ile girilen sayfalara girmesini engellemiş bulunuyoruz.

Kullanıcı ve Rol Authorizing

Controller içerisinde yer alan actionların üst kısmına [Authorize] özniteliğinden yararlanarak belirtmiş olduğumuz sayfalara kullanıcı girişi olmadan girilmesine engelleyebiliyoruz. Ayrıca bu özniteliğin özelliklerinden yararlanarak kullanıcı ve rol bazlı olarak giriş yapılabilmesine olanak tanıyabiliriz. Bu işlem için SerturGuvenlik() ve YoneticiGuvenlik() isimli actionları Controller sınıfına ekliyoruz


Controller\HomeControllers.cs
using System.Web.Mvc;

namespace Security1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            return View();
        }

        public ActionResult About()
        {
            return View();
        }

        [Authorize]
        public ActionResult SirketGuvenligi()
        {
            return View();
        }

        [Authorize(Users = "Sertur")]
        public ActionResult SerturGuvenlik()
        {
            return View();
        }

        [Authorize(Roles = "Yonetici")]
        public ActionResult YoneticiGuvenlik()
        {
            return View();
        }
    }
}

Bu işlemlerden sonra gerekli viewları oluşturduktan sonra her ikisi içinde kullanıcı girişi yaparak sayfaları denediğimizde yetkilendirmenin başarılı bir şekilde gerçekleştiğini gözlemleyebiliriz.

Örnek olarak Sertur kullanıcı ile sisteme giriş yapıldığında Home/YoneticiGuvenlik adresine giriş yapıldığında yetkiden ötürü girilemediği görülmektedir. Bir diğer örnek olarak ise, başka bir kullanıcı ile sisteme giriş yapıldıktan sonra SerturGuvenlik adresine giriş yapıldığında yine giriş yapılamadığı gözlemlenecektir.

Authentication Ayarlamak

MVC uygulamalarında var sayılan olarak kullanılan veri tabanını düzenleyebilme olanağımızda yer almaktadır. Geliştirilen uygulamaları incelediğimizde Login kontrollerinden alışık olduğumuz aspnetdb.mdf dosyasından yararlanıldığı gözlemlenebilecektir. Hazırlanmış olan projenin bütün dosyalarını görüntüle dediğimizde de veri tabanı dosyasının App_Data klasörünün içerisinde yer aldığı görebiliriz.



Eğer ki bizler yeni bir veri tabanı eklemek istersek C:\Windows\Microsoft.NET\Framework\v2.0.50727 yolunda yer alan aspnet_resql uygulamasını çalıştırarak yeni bir ver tabanı oluşturabilinmesi mümkündür.



Bu işlem sonrasında SQL Server Management Studio yardımı ile aspnetdb veritabanını görüntüleyebilmemiz mümkündür. Sonrasında web.config dosyası içerisinde kendi SQL serverımızın çalıştığı sunucu adını, kullanıcı adını ve şifresini de vererek düzenleme yapabilir, kendi veri tabanımız ile çalışabilinmesi mümkündür.

Eğer ki bu veri tabanının çalışmasına özgü bir SQL kullanıcı oluşturulmak istenirse SQL Server Management Studio yardımı ile oluşturulabilinmesi mümkündür. Bunun için Security tabı içerisinde yer alan Logins klasörünün üzerine sağ tıklama yaptıktan sonra New login... seçeneğine tıklanması ile bu işlem başlanmış olunacaktır.


Bu seçeneğe tıkladıktan sonra karşımıza çıkan ekrandan aspnet_roles ve aspnet_membership şemalarını oluşturmuş olduğumuz ya da var olan bir kullanıcıya atayarak kullanılabilmesine olanak tanıyoruz.



Bu işlem sonrasında kendi kullanıcımıza da gerekli rol ve kullanıcı oluşturma,değiştirme ve silme yetkisi tanımlamış oluyoruz.

Bu yazımızda ASP.NET MVC uygulamalarında güvenlik amacı ile sayfalar arası kimlik denetimi sağlanabilmesi için kullanıcı ve rol oluşturduktan sonra bu bilgileri [Authorize] özniteliği yardımı ile nasıl kullanabileceğimizi incelemeye çalıştık.

Umarım yararlı olabilmiştir.

Turhal Temizer
[email protected]
http://turhal.blogspot.com
Makale:
Asp.Net MVC Framework - Güvenlik (Authorization) ASP.NET Turhal Temizer
  • Yazılan Yorumlar
  • Yorum Yaz
AĞU
19
2010
AspNetSqlMembershipProvider 'in sisteminizde tanimli olup olmadigina goz atmaniz gerekmektedir. Eger ki yksa bu tur bir hata alabilirsiniz...
TEM
27
2010
Asp.Net Configuration tıkladığımda açılan sayfada şu hatayı alıyorum (An error was encountered. Please return to the previous page and try again. ) ne yapmam gerekli?
EKİ
6
2009
Evet. Görüşe katılmamak elde değil. Hem kurumsal hem de orta ölçekli projelerde aspnet_membership kontrollerinin kullanıldığını görmek çok zor oluyor. Yazının asıl amacı da zaten yola çıkarken elimizde ne gibi bir seçenek var. Bunu merak eden geliştiricilerin işini görebilecek bir yazı şeklinde. Yazıların devamında daha farklı seneryolar ile örnekler çeşitlendirilebilir. Bilgilendirme için çook teşekkürler.
EKİ
6
2009
kucuk projelerde evet ama orta olcekli ya da kurumsal projelerde yeterince etkin olmayan bir yontem oldugunu dusunuyorum. uygulamanin da farkli veri tabanlarinda calisacagini dusunerek tasarlardigimi dikkate aldigimda yine bu yonten bana bagimlilik getirmekte. hazir yapilarin gunu kurtarmak adina "kullanisli" oldugunu dusunuyorum.
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor