10 Şubat 2015 Salı

C# ile makina veya Domain kullanıcı bilgilerine erişim

Bu iş için Directory Service kütüphanesi içinde zaten alt seviyeli sınıflar mevcut idi ancak bir üst seviyeli sınıf ile işlemi daha kolay hale getirmişler :

string userName = string.Empty;
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "Your Domain Name")) 
{
    UserPrincipal user = new UserPrincipal(pc);
    user = UserPrincipal.FindByIdentity(pc, "User ID Will Come here");
    if (user != null)
    {
        userName = user.GivenName + " " + user.Surname;
    }
    else
    {
        //return string.Empty;
        userName = "User Not Found";
    }
}
Burada dikkat ederseniz önce veri almak istediğimiz yapıya ulaşmak adına bir bağlantı aracı açıyoruz. Bu araç ile hem makina hemde domain'e aynı arayüzden ulaşmak mümkün. Yukarıdaki örnekte domain'e ulaşma gözükmekte. Eğer ContextType parametresini ContextType.Machine olarak ayarlarsanız o zaman makina üzerinden de bilgi alabilirsiniz. Bir örnek şöyle olabilir :

  private bool IsValidWindowsUser(string userName, string password)
  {
       using (var p = new PrincipalContext(ContextType.Machine))
            return p.ValidateCredentials(userName, password);
  }

Api Dokümansasyonu için MSDN : http://bit.ly/1AdjRPt
Yukardaki örnekleri aldığım stackoverflow başlıkları :
how to get currently loggedin windows account from an asp.net page : http://bit.ly/1FrXZQE
C# - Not able to validate local machine user when “.\” is pre-append with username : http://bit.ly/1zECAD2

Yorum Gönder