Вспомогательный класс Active Directory - PullRequest
5 голосов
/ 12 июня 2009

Есть ли где-нибудь класс помощника Active Directory? Просто проверяю, прежде чем заново изобретать колесо.

Мне нужно

  1. Проверка пользователя в AD.

  2. Получить его / ее роли члена.

Спасибо

Ответы [ 3 ]

10 голосов
/ 12 июня 2009

В .NET 3.5 вы хотите посмотреть System.DirectoryServices.AccountManagement . Для более ранних версий System.DirectoryServices есть то, что вам нужно, но это немного больше работы.

using (var context = new PrincipalContext( ContextType.Domain ))
{
      var valid = context.ValidateCredentials( username, password );
      using (var user = UserPrincipal.FindByIdentity( context,
                                                      IdentityType.SamAccountName,
                                                      username ))
      {
          var groups = user.GetAuthorizationGroups();
      }
}
3 голосов
/ 12 июня 2009

Вот пример кода, который я использовал:

using System.DirectoryServices;

public static string GetProperty(SearchResult searchResult, 
    string PropertyName)
{
    if (searchResult.Properties.Contains(PropertyName))
        return searchResult.Properties[PropertyName][0].ToString();
    else
        return string.Empty;
}

public MyCustomADRecord Login(string UserName, string Password)
{
    string adPath = "LDAP://www.YourCompany.com/DC=YourCompany,DC=Com";

    DirectorySearcher mySearcher;
    SearchResult resEnt;

    DirectoryEntry de = new DirectoryEntry(adPath, UserName, Password, 
        AuthenticationTypes.Secure);
    mySearcher = new DirectorySearcher(de);

    string adFilter = "(sAMAccountName=" + UserName + ")";
    mySearcher.Filter = adFilter;

    resEnt = mySearcher.FindOne();


    return new MyCustomADRecord()
    {
        UserName = GetProperty(resEnt, "sAMAccountName"),
        GUID = resEnt.GetDirectoryEntry().NativeGuid.ToString(),
        DisplayName = GetProperty(resEnt, "displayName"),
        FirstName = GetProperty(resEnt, "givenName"),
        MiddleName = GetProperty(resEnt, "initials"),
        LastName = GetProperty(resEnt, "sn"),
        Company = GetProperty(resEnt, "company"),
        JobTitle = GetProperty(resEnt, "title"),
        Email = GetProperty(resEnt, "mail"),
        Phone = GetProperty(resEnt, "telephoneNumber"),
        ExtensionAttribute1 = GetProperty(resEnt, "extensionAttribute1")
    };
}
2 голосов
/ 12 июня 2009

Пространство имен System.DirectoryServices.ActiveDirectory

http://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectory.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...