Ana içeriğe atla

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

Yorumlar

Bu blogdaki popüler yayınlar

Babamın durumu

Babam Mart 2017 de zatüreden hastanede yatmıştı. Bu sırada ciğerlerde bir kanser görülmüş. Bu kanserin ne olduğu ile ilgili tetkikler de başlamış. Zatüreden sonra hemen kanser ile ilgili işlemlere yoğunlaşıldı. Kalçada görülen bir kitle vardı. Ona da baktılar ama temiz çıktı. Kanser tedavisi olan kemoterapi hemen başladı. 14 haziranda ilk kemoterapi dozunu aldı. İlk günler iyiydi. 19 hazirandan itibaren durumu kötülemeye başlamış. En son 21 Haziran gecesi çok kötü olunca önce Torbalı Devlet Hastanesine götürüldü. Burada vücudundaki sodyum'un çok azalmış olmasından dolayı hemen sodyum takviyesi yapıldı. Sodyum takviyesi ancak bir oranda etkili olduktan sonra yine kötü duruma geri dönüş yapmış. Bu yüzden Bozyaka araştırma hastanesine sevkedildi. Bozyaka da önce dahiliye yoğun bakıma alındı. Ancak burada bir süre kalbi durmuş ve kalp masajı ile geri getirmişler. Sonrada genel yoğun bakıma aldılar.
Şu an yoğun bakımda hipotermi durumunda tutuluyor. Bu uygulanan tedavilerden biri. Diğer…

Azure Cosmos DB Emulator Çalışmıyor.

Merhaba, Bugün Azure Cosmos DB'ye bir göz attım. Kullanımını anlamak için kendi bilgisayarımıza bir emulator(Azure Cosmos DB Emulator) kurabiliyoruz. Bunu kurup çalıştırdığımda DocumentDB.StartupEntryPoint.exe'nin hata verdiğini gördüm. Hatanın detayını eventviewer'dan şöyle gördüm:

Git'te GitCredentialWinStore ile ilgili alınan hatanın çözümü

Git kurulumundan sonra remote(sunucu) ile ilgili işlemler yaptığınızda session açık olsada tekrar tekrar kullanıcı adı ve şifre soruyor ve mesaj ekranında aşağıdaki gibi bir hata alıyorsanız:
"C:\Program Files (x86)\GitExtensions\GitCredentialWinStore\git-credential-winstore.exe" erase: C:\Program Files (x86)\GitExtensions\GitCredentialWinStore\git-credential-winstore.exe: No such file or directory bu durumda  git'in şifre saklama sisteminde bir problem oluştuğunu görmekteyiz. Bunun çözümü olarak öncelikle https://github.com/Microsoft/Git-Credential-Manager-for-Windows adresinden Windows için git şifre yönetim aracını indirmeniz ve kurmanız gerekiyor. Dosyanın tam indirme linki :
https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases
şeklindedir. Güncel versiyonu buradan indirip kurduktan sonra GIT BASH ile 2 satırlık bir işlem yapmamız gerekiyor.

1. öncelikle git'in geçerli şifre yöneticisini siliyoruz :

git config --global --unset credential.helper