Za pomocą C# bez problemu można obsłużyć uwierzytelnianie za pomocą Active Directory. W dalszej części wpisu zostaną umieszczone fragmenty kodu ilustrujące ten problem.
Dodanie odpowiednich bibliotek:
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
Sprawdzenie czy użytkownik jest zalogowany:
public bool AuthenticateUser(string domainName, string userName, string password)
{
try
{
using(var context = new PrincipalContext(ContextType.Domain, domainName, userName, password)) {
if (context.ValidateCredentials(userName, password))
{
return true;
}
}
catch
{
return false;
}
}
Pobranie ID użytkownika
public Guid? GetUserGuid(string domain, string username)
{
PrincipalContext context = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(context, domain + @"\" + username);
UserPrincipal user = UserPrincipal.Current;
return user.Guid;
}
Pobranie listy grup użytkownika
public List GetGroups(string userName)
{
List result = new List();
List groupNames = new List();
PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain, userName);
if (user != null)
{
GroupPrincipal prototype = new GroupPrincipal(yourDomain);
PrincipalSearcher searcher = new PrincipalSearcher(prototype);
foreach (var gp in searcher.FindAll())
{
GroupPrincipal group = gp as GroupPrincipal;
if (group != null)
{
if (user.IsMemberOf(group))
{
groupNames.Add(group.Name) ;
}
}
}
}
return groupNames;
}
Mam nadzieję, że powyższe fragmenty kodu się przydadzą:)