MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter



Benzer belgeler
REQUEST QUERY STRING. Sayfalar: default.aspx ve sorgu_sayfasi.aspx. default.aspx sayfası: sorgu_sayfasi.aspx sayfası:

Üst Düzey Programlama

BioAffix Ones Technology nin tescilli markasıdır.

SİGORTACILIK İÇİN FARKLI BİR GELECEK TASARIMI

BioAffix Ones Technology nin tescilli markasıdır.

BioAffix Ones Technology nin tescilli markasıdır.

BioAffix Ones Technology nin tescilli markasıdır.

GEÇERLİLİK KONTROLLERİ VALİDATİON CONTROLS. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

5651 ve 5070 Sayılı Kanun Tanımlar Yükümlülükler ve Sorumluluklar Logix v2.3 Firewall. Rekare Bilgi Teknolojileri

Web Uygulama Güvenliği Kontrol Listesi 2010

Kurumsal Kimlik Yönetimi ve Güçlü Kimlik Doğrulama. Yılmaz Çankaya

Kets DocPlace LOGO Entegrasyonu

ÇÖZÜM BİLGİSAYAR KOLAY RANDEVU RANDEVU WEB SERVİSLERİ YAZILIM FİRMALARI ENTEGRASYON KILAVUZU Sürüm: 1.0

VIO ERP12 Muhasebe Kurulum

YZM 3215 İleri Web Programlama

Üst Düzey Programlama

Uygulama İş Akış Kaydında Koşul Tanımlamaları

Güncel Versiyon İle E-Defter Oluşturulması ve Gönderilmesi

İLİŞKİSEL VERİTABANLARI

Sunum İçeriği. Programlamaya Giriş

ULUSAL ELEKTRONİK TEBLİGAT SİSTEMİ

Intercepting Filter Tasarım Şablonu KurumsalJava.com

Veritabanı. Ders 2 VERİTABANI

Ders 8: Metotlar. barisgokce.com

Üst Düzey Programlama

Güvenlik Java ve Web Uygulama Güvenliği

Veri Yapıları Laboratuvarı

Nesne Yönelimli Programlama

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

Armitage Nedir? Kullanım Öncesi

KURUMSAL İNTERNET BANKACILIĞI MÜŞTERİ KULLANIM KILAVUZU. Yönetim İşlemleri

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

Erişim Makina. IFS Admin Kullanım Klavuzu. Umut Aytaç Mutlu

VERİ TABANI SİSTEMLERİ

LDAP Administrator ile Active Directory Yonetimi

efinans Finansal İşlemler Modülü Kullanım Kılavuzu

İş Akış Yönetimi LOGO Kasım 2014

MYLOGO ÜYELİK VE KUR İŞLEMLERİ

Medula Eczane E-Reçete Web Servislerinin Kullanım Kılavuzu (Test amaçlıdır, ödemeye esas teşkil etmeyecektir)

C# Metotlar ve Metot Tanımlama

Diziler İndisli Değişkenler

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

ULUSAL ELEKTRONİK TEBLİGAT SİSTEMİ

Dijital Varlık Yönetimi Yardım Dokümanı

Balon & Banka Teslim tarihi: 17 Kasım 2008

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

MODSECURITY DENETİM KAYITLARINI ANLAMAK. Gökhan Alkan,

Üst Düzey Programlama

Coslat Monitor (Raporcu)

DESTEK DOKÜMANI. Ürün : GO/TIGER2/UNITY2 Bölüm : Sistem Đşletmeni

DESTEK DOKÜMANI. Masaüstü için rapor kısayolu. Ürün : GO Bölüm : Görev Zamanlayıcı

MENÜ AYARLAMA 1. MENÜ AYARLAMA. [X] [X] Standard. [X] [X] Yeni Fonksiyon

SESSİON KULLANIMI. .Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim. Language=VBScript Codepage="1254"%>

Üst Düzey Programlama

PAPERWORK TEKNİK MİMARİ

BİL-141 Bilgisayar Programlama I (Java)

VERİ TABANI I. Yrd.Doç.Dr. İlker ÜNAL. Teknik Bilimler Meslek Yüksekokulu

SORGULAR VE ÇEŞİTLERİ II

MUĞLA SITKI KOÇMAN ÜNİVERSİTESİ. TAŞINIR KAYIT VE YÖNETİM SİSTEMİ (TKYS) BİLGİLENDİRME TOPLANTISI 27 Kasım 2012

İçindekiler Tablosu Yazarkasa Aktarım Programı.....3

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

NET YAZILIM & DANIŞMANLIK E FATURA GENEL BİLGİLER. Öncelikle kur bölümünde (mikrokur veya kur9000) Firma tanım kartında

BİLGİSAYAR UYGULAMALARI Şırnak Üniversitesi Mühendislik Fakültesi Güz Dönemi Arş.Gör. Eren DEMİR ve Arş.Gör. Veysel KIŞ (

Php İle Mysql Veritabanından Bilgi Çekme

KONFİGURASYON TANIMLARI

WebInstaller. 1. Kurulum Đçin Gereksinimler

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

19 Şubat 2016 Cuma

MOBILEPAX SOAP PRODUCT API KULLANIM ŞEKLİ

efinans Finansal İşlemler Modülü Kullanım Kılavuzu

KALİTE KONTROL GRUP MİKTAR ARALIĞI DESTEĞİ

BARIŞ TATİL SİTESİ DOKÜMAN KONTROLÜ PROSEDÜRÜ

BAŞVURU SAHİBİ KAYIT İŞLEMLERİ

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Medula Eczane E-Reçete Web Servislerinin Kullanım Kılavuzu (Test amaçlıdır, ödemeye esas teşkil etmeyecektir)

HSancak Nesne Tabanlı Programlama I Ders Notları

TÜİK e-vt. Web Servis Kılavuzu

İnternet Programcılığı

Doğrudan Borçlanma Sistemi

Online Protokol Üretim Projesi

Üst Düzey Programlama

Üst Düzey Programlama

Spring Security Framework Harezmi Bilişim Çözümleri

Ders 8 Konu Özeti ve Problemler

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

KAMU YATIRIMLARI BİLGİ SİSTEMİ (KaYa) KULLANIM KILAVUZU

public static int Toplam int x, int y

24 Mart İlgili Modül/ler : Transfer. İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL

Zaman Ayarlayıcı İşlemler

KÖHLER GPRS SAYAÇ HABERLEŞME MODÜLÜ TANITIM VE KULLANMA KILAVUZU

BİTİRME RAPORU. Ömer Furkan ARI Yıldız Teknik Üniversitesi

easio MultiPass Sayfa 1

BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK

Bölüm 4: DDL Veri Tanımlama Dili

J-Guar Self Servis Kurulumu

Dijital Eğitim Portalı Kullanıcı el kitabı. digikampus.com. digikampus.com tüm hakları saklıdır.

Medula Eczane Stok Bilgileri Web Servisleri Kullanım Kılavuzu

Access e Nasıl Ulaşılır. Araç çubuklarını yeniden düzenlemek için Görünüm komutunun Araç çubukları seçeneği kullanılır.

Transkript:

MVC Kullanıcı Doğrulama ve Yetkilendirme MVC projesinde kullanıcıların oturum açmasının sağlanması ve sadece yetkili oldukları action metotlara erişebilmelerini anlatan bir örnek uygulama gerçekleştirilecektir. Kullanıcı bilgilerini cookie nesnesinde saklayarak ihtiyaç duyulduğunda bu verilere erişilerek işlem yapılması sağlanmıştır. Başlıyoruz. MVC Filtreler MVC projelerinde sunucuya gelen isteklerden hemen önce veya sonra devreye giren, loglama, güvenlik gibi bir takım işlemleri gerçekleştirmek üzere tanımlanan sınıflardır. Bir hatayla karşılaşıldığında hatayı yakalayıp loglayan filtreler, metot çalışmasını loglayan filtreler, kullanıcı yetki kontrolü yapan filtreler tanımlanabilir. MVC projesinde aşağıdaki türden filtreler tanımlanabilmektedir. 1. Action Filter : Action metodun çalışmasından önce veya hemen sonra devreye girer. 2. Authorization Filter : Yetkilendirme işlemlerinde kullanılan filtredir 3. Exeption Filter : Action veya controller içinde bir hata olduğunda devreye girer 4. Result Filter : Geri dönüş değeri çalışmadan önce veya sonra devreye girer Buradaki örneğimizi incelerken Action Filter türünde bir filtre tanımlayacağız. Filtrelerin devreye girmesi demek filtrelerde tanımlanmış olan metotların çalışması demektir. Tanımlanan bir sınıfın filtre özelliği gösterebilmesi için FilterAttribute sınıfını ve IActionFilter arayüzünü kalıtım almalıdır. FilterAttribute sınıfı ve IActionFilter arayüzü kullanılarak oluşturulan sınıflar sayesinde nitelikler (filtreler) tanımlanabilir. Tanımlanan nitelikler hangi metot veya sınıf ile etkin olacaksa o sınıf veya metodun başında bildirilir. İlgili nitelikle işaretlenen metot çağırılmadan önce filterattribute sınıfından türetilen nitelik metotları devreye girer. Şimdi bir MVC projesi başlatalım. Projemize Nitelikler isimli bir klasör ekleyelim. Tanımladığımız nitelikler bu klasör içinde barınacaktır. Filtre Kullanarak Log İşlemi İlk niteliğimiz loglama işlemini yapacak bir nitelik olsun. Bu nitelik hangi metota verilirse o metodun çalışması sırasındaki bilgileri loglanacaktır. Örneğin hangi metot, ne zaman, hangi kullanıcı adıyla, hangi ip numarasından hangi parametrelerle çağrılmış bilgisi log kaydı olarak tutulabilir. Log kaydını örnek veritabanımızda bulunan log isimli tabloda tutacağız. Log tablosunu yapısı aşağıdaki gibidir. Örnek tablomuz temel birkaç log bilgisini saklayacaktır. Tabiki örnek tablo ihtiyaca göre genişletilebilir. Log Kaydı için Hazırlanan Nitelik FilterAttribute ve IactionFilter arayüzünden türetilen sınıflarda ezilmesi gereken (ovrride) bir takım metotlar bulunur. IactionFilter arayüzünün ezilmesi gereken iki metodu bulunur. Bu metotlar temel olarak metot çalışmaya başlamadan hemen önce (OnActionExecuting) ve metodun çalışması bittikten hemen sonra (OnActionExecuted) devreye giren metotlardır. Hazıradığımız nitelik sınıfı aşağıdaki gibidir.

Hazırlanan nitelik metotları içinde çağrılan metota ait bilgilere ulaşmak için context nesnesinin ActionDescriptor özelilğinden erişilir. Bu özellik altında metotun ismine, metodun parametrelerine ulaşılabilir. Metodun bulunduğu controllera ait bilgilere ede ControllerDescriptor özelilğinden ulaşılabilir. Örnekte görüldüğü üzere log metotlarımız içerisinde log tablosuna yeni bir kayıt ekleyen temel bir kaydeme işlemi yapılmaktadır. Niteliklerin Metotlarda Belirtilmesi Bir niteliğini bir metot için aktif olması isteniyorsa controller metodunun tanımlandığı yerde metot tanımından hemen önce nitelik belirtilir. Bu işlem aşağıdaki şekilde yapılır. Niteliğimizin adı LogAttribute olmasına rağmen Attribute ifadesini yazmamıza gerek olmadan da sadca Log yazarak da nitelik belirtilebilir. Yukarıdaki tanımlamanın ardından AnaSayfa isimli controller metodu her çağrıldığında log

niteliğindeki metotlar devreye girecek ve işlemler loglanacaktır. Burada görüldüğü üzere metot tanımından önce değil de controller tanımından hemen önce nitelik belirtilmiştir. Bu durumda bu controller içinde bulunan tüm metotlara ait işlemler loglanacaktır. Log niteliğinin sadece bir metot için devreye girmesi isteniyorsa o sadece o metot için belirtilmesi yeterli olacaktır. Oturum Açma MVC projesinde oturum açma işlemi bildiğimiz form authentication işlemleri ile aynıdır. Form kimlik doğrulamasında olduğu gibi bir veri kaynağından doğrulanan kullanıcıya ait bir cookie nesnesi oluşturulur. Kullanıcı bilgilerine ihtiyaç olduğunda bu cookie nesnesi kullanılır. Tabiki kullanıcı bilgileri istenirse bir session nesnesinde de saklanabilir. Şimdi bu işlemin temel olarak nasıl yapılabileceğini inceleyelim. Örnek kodlarımızda Giris isimli metodumuz oturum açılması için gerekli işlemlerin yapıldığı metottur. Kullanıcı bilgileri doğrulandıysa okunan kullanıcı bilgileri json formatına dönüştürülür. Bu işlem için JavaScriptSerialize nesnesi kullanılır. Json formatında string haline dönüştürülen kullanıcı bilgileri oluşturulan ticket nesnesinin userdata özellliğine atanır. Bu sayede kullanıcı bilgilerine cookie üzerinden ulaşabileceğiz. Ticket nesnesi şifrelenerek cookie oluşturulur. Kullanıcı Bilgilerinin Filtre icinde Okunması Metotlar çalıştırılırken oturum açılıp açılmadığının kontrol edilmesi, oturum açıldıysa kullanıcının rollerine göre metot çalıştırma yetkisinin olup olmadığının kontrol edilmesi gerekebilir. Yetki kontrolnün yapılabilmesi için o an oturum açmış olan kullanıcının bilgilerine cookie nesnesi üzerinden erişilmesi gerekir. Kullanıcı bilgileri veritabanındaki yetki bilgileri ile karşılaştırılarak yetki kontrolü yapılabilir. Bir veritabanında metotlar rollerle eşleştirilerek hangi metoda hangi rolün bağlı olduğu bilgisi kaydedilebilir. Bu amaçla kullanılan örnek veritabanındaki tablolar aşağıdaki gibidir. Basit olarak her bir metot adı veritabanına kayıt edilmektedir. Her bir metot bir veya daha fazla rolle eşleştirilerek yetki tanımlanmaktadır. Örneğimizde bir metot çağrıldığında kullanıcının yetkili olup olmadığı kontrol edilecektir. Bu amaçla yetki kontrolünü yapan bir nitelik tanımlanacaktır.

Yetki kontrolünü yapacak olan niteliğimizin ilgili metodu aşağıdaki gibi tanımlanabilir. Örnekte görüldüğü üzere context nesnesi üzerinden cookie nesnesine ulaşılmaktadır. Cookie nesnesinin barındırdığı ticket elemanı daha önce şifrelenmişti. Şimdi şifrelemenin tersi işlemi yaparak ticket nesnesinin şifresini çözüyoruz ve userdata bilgilerine ulaşıyoruz. Userdata bilgileri json formatında string olarak kaydedilmişti. Bir nesne dizisi olarak userdata bilgisine ulaşmak için JavaScriptSerialize nesnesinin deserilaze metodunu kullanarak userdata bilgileri nesne dizili olarak elde edilebilir. Çağrılan metoda ait veritabanında tutulan yetki bilgisine de veritabanı sorgusuyla ulaşılabilir. Kullanıcı rolleri ile metodu çalıştırma yetkisi olan roller karşılaştırılarak yetki olup olmadığı kontrol edilir. Yetki yoksa context nesnesinin result özelliği değiştirilerek giriş sayfasına yönlendirme yapılır. Eğer yetki varsa bağlantıya izin verilir. Herhangi bir engelleme yapılmaz. Hazırlamış olduğumuz bu nitelik yetki kontrolü yapılmak istenen medotun başında belirtildiğinde ilgili metot için yetki kontrolü yapılmış olacaktır. Örneğimizde kullanıcı bilgileri cookie nesnesinde saklandı. İstenirse oturum açma sayfasında kullanıcı bilgileri bir session nesnesinde de saklanabilir. Bu durumda context üzerinden session bilgisine ulaşılarak kullanıcı kontrol edilebilir. Kullanıcı bilgilerinin session nesnesinde saklanması durumunda session süresi dolduğunda null hataları ortaya çıkabilir. Bu yüzden kullanıcı bilgileri session nesnesinde saklanıyorsa bu duruma dikkat edilmelidir. Bilgilerin cookie nesnesinde

saklanması durumunda oturum açık kaldığı ve cookie silinmediği sürece kullanıcı bilgilerine erişilebilir. Oturumu kapatmak için ilgili cookie nesnesi silinebilir.