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
Kadir Çamoğlu
Kadir Çamoğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
5 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: authheader basitaraclar bilgileri bilgilerini denetimi denetimli kimlik kullanici metodu public rastgele servis servisi servisimize servisini XML / Web Serv. Kadir Çamoğlu
 
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 : XML / Web Serv.
Yayınlanma Tarihi : 13.6.2004
Okunma Sayısı : 60719
Yorum Sayısı : 1     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
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 28.3.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 28.3.2024
Turhal Temizer
Conda install environment.yml Package 28.3.2024
Turhal Temizer
Mac OS/X Removing CUDA 28.3.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
SOAP Header Kullanarak Web Servislerine Kimlik Denetimi Eklemek
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Web Servis teknolojisi platformları, mesafeleri, dilleri ve kültürleri aşarak bazı hizmetleri paylaşabilmek amacıyla geliştirilmiştir. Bazen geliştirdiğimiz bu servisler içerik olarak hassas ve önemli bilgiler taşıyabilir ve bu servisleri ancak belirli kişilerin kullanmasına izin verilebilir. İşte bir Web Servis hizmetinin, imtiyaz sahibi belirli kişiler tarafından kullanılmasını sağlamanın en pratik yolu Kimlik Denetimi yapmaktır. Bir Web Servis uygulamasında kimlik denetimi SOAP Headers aracılığıyla yapılır. Bu çalışmada üç temel adımımız var:

Birincisi; bir web servisi hazırlamak,
İkincisi; web servisimize kimlik denetimi eklemek,
Üçüncüsü; kimlik denetimli bir web servisini kullanmak.
 

1. Bir Web Servisi Hazırlamak

Öncelikle web servisi projemizi başlatalım. Bunun için Visul studio.Net te yeni projeler menüsünden proje tipi olarak C# ve Şablon olarak da Web Service seçelim ve proje adını "KimikDenetimliWebServis" olarak tanımlayalım.



Visual Studio bize uygulamamız için gerekli bileşenlerle donatılmış bir proje oluşturur. Bu bileşenlerden biri de Web Servis dosyası olan "Service1.asmx" dir. İsimlendirme için bir çok satır kodu değiştirmekle uğraşmamak için bu dosyayı siliyoruz ve Project menüsünden Add Web Service... seçeneğini tıklayıp uygulamıza BasitAraclar isimli yeni bir Web Service dosyası ekliyoruz.



Evet şimdi projemiz içerisinde "BasitAraclar.asmx" dosyasıyla hazır. Dosyayı kod penceresinde açarak kodumuzu yazmaya başlayabiliriz. Odak noktamız kimlik denetimi olacağından basit bir web metodu yazacağız.

   
   [WebMethod]
   public int SayiUret(int altLimit, int ustLimit)
   {
      Random rastgele=new Random();
      return rastgele.Next(altLimit, ustLimit);
   }
 
Metodumuz kendisine verilen altLimit ile ustLimit tamsayıları arasında rastgele bir sayı üreterek bunu çağırıldığı noktaya iletiyor. Kodumuzu hemen test edelim. Ancak çalıştırmadan önce uygulamanın başlangıç noktası olarak web servisimizi tanımlamalıyız. Solution Explorer da BasitAraclar.asmx üzerine sağ tıklayalım ve Set As Start Page diyelim. Şimdi F5 e basarak uygulamamızı çalıştırabiliriz.

BasitAraclar web servisimiz için ekrana gelecek olan web sayfasında bulunan SayiUret linkine tıklayalım. Açılan sayfada metodumuzu denemek amacıyla alt ve üst limitleri girelim ve invoke butonuna basalım.



Butona her tıkladığımızda alt limitle üst limit arasında değişen rastgele üretilmiş sayılar sonuç sayfasıyla bize gönderilecektir.

Şimdi servisimize bu iki int parametreyi, yani altLimit ve ustLimit sayılarını taşıyan mekanizmaya bir bakalım. Web servisleri veri alış verişinde SOAP (Simple Object Access Protocol) kullanırlar. SOAP sayesinde veri platform bağımsız olarak ve güvenlik duvarlarınca engellenmeden her türlü ortama aktarılabilir. Burada konumuz SOAP olmadığından SOAP mesajına genel olarak bir bakmamız yeterli. İki int parametre alan metodun tanımlanışı açıkça belli oluyor.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <SayiUret xmlns="http://tempuri.org/">
         <altLimit>int</altLimit>
         <ustLimit>int</ustLimit>
      </SayiUret>
   </soap:Body>
</soap:Envelope>

Basit bir web servisi hazırladık ve testimizi de yaptık. En son SOAP yapısını da inceleyince birinci aşamayı tamamlamış olduk.

2. Web Servisine Kimlik Denetimi Eklemek

Şimdi de servisimize kimlik denetimi ekleyelim. Bu işlemi basitçe ve adımlar şeklinde gerçekleştireceğiz.

Birinci adım, aşağıdaki isim alanını uygulamamıza ekeleyelim.

   using System.Web.Services.Protocols;
İkinci adım, AuthHeader adında SoapHeader classından miras alma yoluyla türetilmiş yeni bir sınıf oluşturalım.

   
   // Kimlik denetimi için kullanılacak sınıf.
   public class AuthHeader : SoapHeader
   {
      public string Username;
      public string Password;
   }
 
Sınıfımız iki public üyeye sahip. Bunlar string veri tipinde. Bu üyelerin amacı kullanıcıadı ve parola bilgilerini taşıyarak kimlik denetiminde kullanılmalarını sağlamak.

Üçüncü adım, kimlik denetimi bilgilerini web servis uygulaması içinde kullanılabilir hale getirmek için, BasitAraclar sınıfı içerisinde, tasarladığımız AuthHeader veri tipinde public bir field tanımlamak.

   public AuthHeader KimlikDenetimi;
Dördüncü adım, kimlik denetimi yapmak istediğimiz servise bir attribute eklemek.

   [SoapHeader("KimlikDenetimi")]
Beşinci adım, web servis uygulamamızda tanımladığımız ve SoapHeader attribute içerisinde referans gösterdiğimiz KimlikDenetim isimli değişkeni kullanarak kod içerisinde denetimimizi gerçekleştirelim.

  
   if(KimlikDenetimi.Username=="test" &&
      KimlikDenetimi.Password=="test")
   {
      // Kimlik denetimi: kullanıcı sistemde tanımlı
      Random rastgele=new Random();
      return rastgele.Next(altLimit, ustLimit);
   }
   else
      // Kimlik denetimi: kullanıcı yetkisiz
      return 0;
 
Evet buraya kadar olan işlemlerle, kimlik denetimi kullanan bir web servis uygulaması geliştirmiş olduk. Sizin de tahmin edebileceğiniz gibi bu uygulamanın çalıştırılması denetimsiz bir web servisi uygulamasından farklı olacaktır. Bunun için kullanıcı kimlik bilgilerinin SOAP Header’ a yüklenerek web servisine gönderilmesi gerekir. Şimdi F5 tuşuna basarak uygulamamızı çalıştıralım ve yeni SOAP tanımımıza bir göz atalım.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header>
      <AuthHeader xmlns="http://tempuri.org/">
         <Username>string</Username>
         <Password>string</Password>
    
 </AuthHeader>
   </soap:Header>

   <soap:Body>
      <SayiUret xmlns="http://tempuri.org/">
         <altLimit>int</altLimit>
         <ustLimit>int</ustLimit>
      </SayiUret>
  </soap:Body>
</soap:Envelope>

Açıkça görüleceği üzere SOAP tanımımıza yeni bir bölüm eklenmiş: HEADER. Güvenlik bilgisi BODY bölümü içerisinde değil HEADER bölümü içerisinde taşınmaktadır. Uygulamayı çalıştırmayı denediyseniz hata sayfasıyla karşılaşmışsınızdır. Bu kaçınılmazdır. Çünkü web servisi yardım sayfasıyla HEADER oluşturmanız mümkün değildir. Şimdi yapmamız gereken kimlik denetimi için gerekli SOAP ı yapılandırabilecek bir uygulama geliştirmek. 3. Kimlik Denetimli Bir Web Servisini Kullanmak

Basit ve hızlı olması nedeniyle "Console" uygulamasını kullanacağız. Öncelikle yeni bir Visual Studio.Net Console Projesi başlatalım ve adını KimlikDenetimliWSTesti diyelim. Hemen arkasından uygulamamıza nir referans ekleyelim. Add Web Reference.. seçeneğiyle birlikte Web Servisiniyle ilgili bilginin nereden alınacağını tanımlamamızın gerektiği bir ekranla karşılaşacağız. Burada Web services on the local machine seçeneğini kullanarak geliştirdiğimiz örneği bulalım. Web referans adı olarak DenetimliServis yazalım ve Add Reference butonuna basarak, uygulamamıza referansı ekleyelim.Şimdi test kodumuzu yazabiliriz. Konsol ekranında kullanıcı ilk olarak alt limit ve üst limit bilgilerini girmesi gerektiği mesajıyla karşılanacak. Kullanıcı alt ve üst limitleri girip Enter a bastığında ilk rastgele sayı üretilecek ve ekrana yazdırılacak. Kullanıcı belirlediği aralıkta başka rastgele sayı üretmek isterse Enter, uygulamadan çıkmak isterse H tuşuna basacak. Gelelim uygulamadaki en hassa noktaya. Kimlik denetimi için kullanıcı bilgilerinin girileceği nokta... Metod çağırılmadan hemen önce kullanıcı bilgileri tanımlanır ve metodu çağıracak nesneye yüklenir. Gelin koda bir bakalım.
 
  
   // Metodu çalıştıracak nesne...
   DenetimliServis.BasitAraclar arac=new DenetimliServis.BasitAraclar();

   // Kimlik bilgilerini taşıyacak nesne
   DenetimliServis.AuthHeader header=new DenetimliServis.AuthHeader();

   //Kimlik bilgileri yükleniyor.
   header.Username="test";
   header.Password="test";

   //Güvenlik bilgileri metodu çalıştıracak nesneye yükleniyor.
   arac.AuthHeaderValue=header;
 
DenetimliServis isim alanı web servisimizi temsil ediyor. Web servisimizin referansını eklediğimiz anda Visual Studio WSDL dokümanına bakarak iki sınıfı uygulamızda kullanabilmemiz için proxy olarak bizim için yapılandırdı: BasitAraclar ve AuthHeader. Basit araçlar rastgele sayıyı üreten metodu içinde barındıran sınıf. AuthHeader ise kimlik denetimi için gerekli bilgileri taşıyacak olan sınıf. Bu iki sınıf, metod çağırılmadan hemen önce bir yerde buluşmak zorunda. BasitAraclar sınıfının bir örneği olan arac nesnesinin SayiUret metodu çağırılmadan önce, aac nesnesine kimlik bilgileri yüklenmeli. Bunu gerçekleştirmek için, arac nesnesinin AuthHeaderValue propertisine kimlik bilgilerini yüklediğimiz header nesnesini yüklüyoruz. Böylece kimlik denetimli bir şekilde metodumuzu rahatlıkla çağırabiliriz.
 
  int sayi=arac.SayiUret(altLimit,ustLimit);
Bu makalede basit bir kimlik denetimini bir web servisi üzerinde nasıl gerçekleştirebileceğimizi ve kimlik denetimi kullanan bir web servisini nasıl kullanabileceğimizi gördük. Makalede geliştirilen web servisi ve onu kullanan konsol uygulamalarının tam kodlarını buraya tıklayarak indirebilirsiniz.
Makale:
SOAP Header Kullanarak Web Servislerine Kimlik Denetimi Eklemek XML ve Web Servisleri Kadir Çamoğlu
  • Yazılan Yorumlar
  • Yorum Yaz
EYL
7
2004
Benim icin cok yararli bir makele oldu. Konuyu biraz arastirinca SoapHttpClientProtocol sınıfının (web service proxy bu class ı interit ediyor..) credential ozelligi olduğunu gordum. Sonuc olarak kimlik sorgulama bu sekilde yapilirsa daha iyi olacağını düşünüyorum.
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