Veri Gösterim Kontrolü Altyapısı (Model View Controller) Güvenlik Uygulaması

Eyl 06, 2013

MVC (Model View Controller), oluşturulan sitede kimlik doğrulaması ve yetkilendirme işlevini kolaylıkla sağlar. Sadece kimliği doğrulamış kullanıcılar sitenin izin verilen kısmına erişebilirler. Controller (kontrol) içinde tanımlanan yetkilendirme ile her view (görünüm) farklı kişilerin erişimine açılabilir.

Bir MVC uygulaması gerçekleştirebilmek için bilgisayarda Visual Studio 2008 SP1 yüklü olması gereklidir. \\yazilim\yazilim\Microsoft\Visual Studio\Visual Studio 2008\SP1 bağlantısından yüklenebilir.

  1. Öncelikle File (Dosya) -> New Project (Yeni Proje) adımlarından sonra açılan pencereden ASP.NET MVC Web Application (ASP.NET MVC Web Uygulaması)seçilerek proje oluşturulur.



  2. Bir sonraki adımda test projesi istenilip istenmediğini soran pencere gelir. Burada test projesi istenilmediğine dair seçim yapılır. (Visual Web Developer sürümlerinde bu pencere çıkmaz.)



  3. Proje oluşturulduktan sonra güvenlik ayarlarına ulaşabilmek için derlenmesi gerekir. Bunun için “F5” tuşuna basılması yeterli olur.



  4. Derleme sonrasında açılan pencere kapatılır. Kullanıcıları ve yetkilendirmeleri oluşturmak için ASP.NET Configuration (ASP.NET Yapılandırması) seçeneğine tıklanır.



  5. Açılan Web Site Administration Tool (Web Sitesi Yönetim Aracı) içinde Security (Güvenlik) sekmesi seçilir.



  6. Eğer veritabanı sorunu yoksa alttaki sayfa gelir. Burada ayarlamaları Security Wizard (Güvenlik Sihirbazı) ile adım adım yapılabilir. Seçeneğe tıklandıktan sonra gelen bilgilendirme ekranında Next (İleri) seçeneği tıklanır.                                       



  7. Sonraki adımda "From İnternet" (İnternet üzerinden) seçeneği seçilir ve devam edilir. Advanced Provider Settings (Gelişmiş Sağlayıcı Seçenekleri) basamağı atlandıktan sonra Define Roles (Yetkili Grupları Tanımla) adımı gelir. Burada Enable Roles (Yetkili Grupları Etkinleştir) seçeneği işaretlenir. Next (İleri) seçilir.                 



  8. Bir sonraki adımda Yetkili gruplarının (Roles) oluşturulacağı bölüm gelir. Burada yetkili grubu adının girilip Add Role (Yetkili Grubu Ekle) seçilir.



  9. Sıradaki adımda isteğe bağlı olarak kullanıcılar eklenebilir. Kullanıcılar kendilerini İnternet üzerinden de kaydedebilir. Kullanıcı eklemek için kullanıcının bilgileri girilir ve Create User (Kullanıcı Oluştur) seçilir.



  10. Sonraki adımda hangi klasörlere kimlerin ulaşıp kimlerin ulaşamayacağına dair yetkilendirme yapılır. Yetkilendirmenin yapılacağı klasör ve yetkili seçildikten sonra Allow (İzin ver) ya da Deny (Yasakla) seçilir. İşlemi tamamlamak için Add This Rule (Bu yetkilendirmeyi ekle) seçilir.



  11. Sihirbaz ile adım adım oluşturmayı bitirdikten sonra bazı kullanıcıları ve bazı yetkilendirme sınıfları oluşturmuş olur. Security (Güvenlik) sekmesindenManage Users (Kullanıcıları Yönet) seçilir. Gelen ekranda istenirse kullanıcı eklenir, kullanıcılar yetkilendirilir ya da silinebilir. Edit Roles (Yetkileri Düzenle)seçildikten sonra kullanıcının eklenmek istenildiği yetkili grubu seçilir.



  12. Kullanıcılar ve yetkilendirmeler oluşturulduktan sonra erişimin nasıl sınırlandırılacağı belirlenir. "Proje" altında "Controllers" klasörünün içindeki “HomeController.cs” dosyası açılır.



  13. Burada Index() (Anasayfa) ve About() (Hakkında) dosyaları hazır olarak gelir. Bunların altına sayfalar (View) eklenebilir. Ekledikten sonra "public" (genel)komutlarının önüne [Authorize] (yetkilendir) eklenirse o sayfa için kimlik doğrulama yapılır. Bu komuta parametreler eklenerek belirli kullanıcı ya da yetki grupları haricindekilerin sayfaya erişimi engellenebilir.

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

                return View();
            }

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

            [Authorize(Roles="admin")]
            public ActionResult AdminSayfasi()
            {
                return View();
            }
            [Authorize(Users="kullanici1")]
            public ActionResult Kullanici1kisisel()
            {
                return View();
            }

        }
    }

  14. Yukarıda yazılan (Roles=”admin”) sadece "admin" yetki grubundakilerin sayfaya erişimine izin verir. (Users=”kullanici1”) ise sadece kullanici1’e izin verir. Bunları HomeController.cs içine ekledikten sonra eklenen sayfa isimlerine sağ tıklanarak, “Add view…” (Görünüm ekle) seçilir. Gelen ekranda Add(Ekle)tuşuna basılır.



  15. Projenin Views(Görünüm) klasörü içindeki "Home" klasörü içinde bulunan “Index.aspx” açılır.



  16. Anasayfa olan (Index.aspx) içine yeni oluşturulan sayfaların bağlantısı eklenir.

    <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
        <h2><%= Html.Encode(ViewData["Message"]) %></h2>
        <p>
            To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
        </p>
        <p>
        <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Views/Home/AdminSayfasi.aspx">HyperLink</asp:HyperLink>
        </p>
        <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="~/Views/Home/Kullanici1kisisel.aspx">HyperLink</asp:HyperLink>
    </asp:Content>

  17. Views(Görünümler) -> Home(Ev) altında oluşturulan her dosyanın içeriği istenildiği gibi ayarlanabilir. Her View() üstünde ayrı yetkilendirme yapılabilir. Kullanıcılar siteye ulaşmak istediklerinde aşağıdaki gibi bir parola ekranı ile karşılaşırlar.