Skip to main content

Web.Config Dosyasından Authentication

Web uygulamalarında üyelik sistemine ait veriler veritabanlarında saklanmaktadır. Tabi ki bu bilgilerin bir web servisinden veya metin tabanlı dosyadan getirilmesi gibi istisnai durumlarda olabilir. ASP.NET uygulaması geliştirirken bu istisnai durumlardan biri de üyelik bilgilerinin web.config’de saklanmasıdır.

“web.config dosyasında kullanıcı adı ve şifre bilgilerini saklamanın mantığı ne ola ki?” sorusu akla gelebilir. Geliştirdiğimiz uygulamada sadece birkaç tane kullanıcımız varsa, bu kullanıcılarla ilgili çok detaylı bilgiler saklama ihtiyacımız yoksa, veritabanında kullanıcılar için tablolar açmak, select, insert vb. işlemler için sorgular yazmak istemeyebiliriz. Bu tip bir durumda aslında web.config dosyası ve FormsAuthentication mekanizması işimizi oldukça kolaylaştırıyor.

Basit bir örnekle web.config dosyası üzerinden authentication işlemlerini nasıl yönetebileceğimizi inceleyelim. web.config dosyasında system.web > authentication > forms > credentials elementi altına <user> elementleri ile tanımlayacağımız kullanıcı bilgileri aşağıdaki kod parçasında görülmektedir.

web.config
  <system.web>
    <authentication mode="Windows">
      <forms>
        <credentials passwordFormat="Clear">
          <user name="arda" password="12345"/>
          <user name="semih" password="123qwe"/>
        </credentials>
      </forms>
    </authentication>
  </system.web>

<credentials> elementi içerisindeki passwordFormat bilgisi kullanıcılar için tanımlanan şifrenin hangi formatta saklanacağını belirliyor. Kullanabileceğimiz formatlar Clear, MD5, SHA1. Burada Clear kullandık, yani şifreler aynen yazıldığı gibi olacak, herhangi bir hashleme yöntemi yok. Eğer kullanıcının şifresini MD5 veya SHA1 formatıyla hashlersek, hashlenmiş şifre metnini <user> elementi içerisindeki password niteliğine atamamız gerekiyor. web.config dosyasının başkaları tarafından görüntülenmesi ve kullanıcıya ait şifrenin öğrenilmesini istemiyorsak tabi ki MD5 veya SHA1 kullanmalıyız. Bir metnin MD5 veya SHA1 formatındaki değerini elde etmek için FormsAuthentication.HashPasswordForStoringInConfigFile metodunu kullanabilirsiniz.

Kullanıcıların doğrulanması için ise FormsAuthentication sınıfına ait Authenticate metodunu kullanmamız gerekiyor. Bu metot kullanıcı adı ve şifresi bilgilerini alarak, web.config’de yer alan bilgilerle karşılaştırma yapıyor ve bilgiler doğru ise boolean tipinden true, değilse false değeri döndürüyor. Aşağıdaki örnek kodlarla böyle bir kontrolü gerçekleştirebiliriz.

Login.aspx
public partial class Login : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (FormsAuthentication.Authenticate(txtUsername.Text, txtPassword.Text))
            FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, false);
        else
            Response.Write("Hatalı kullanıcı adı veya şifre");
    }
}

Son bir uyarı; web.config dosyasının güncellenmesi uygulamanın restart edilmesine sebep olmaktadır. Bu nedenle, özellikle canlı ortamlarda <user> elementi içerisindeki kullanıcı bilgilerini sıklıkla değiştirirken uygulamanın yeniden başlatılacağını unutmayın.

Web.Config Dosyasından Authentication” hakkında 1 yorum

  1. Merhaba
    Ben WCF service application ile bir web servisini kurup kullanmaya çalışıyorum,
    ftp ye publish ediyorum buraya kadar sıkıntı yok ftp de ilgili dosyalar oluşuyor,
    ama test için açtığım projeden servis referansa (web referans tan) eklemek istediğimde şu hatayı alıyorum :
    “Default credentials are not supported on an FTP request. Parameter name: value”
    çözemedim bir türlü , bir fikriniz var mıdır?
    teşekkür ederim

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir