Могу ли я получить атрибуты Active Directory из WindowsPrincipal? - PullRequest
5 голосов
/ 11 мая 2010

Я хотел бы получить идентификатор сотрудника для текущего пользователя. Это легко доступно в каком-то классе .Net или мне нужно выполнить какой-нибудь LDAP-запрос?

Любые советы приветствуются

Ответы [ 2 ]

6 голосов
/ 11 мая 2010

Еще проще - используйте новые функции .NET 3.5 System.DirectoryServices.AccountManagement.

Подробнее см. В статье MSDN Управление принципами безопасности каталогов в .NET Framework 3.5 .

PrincipalContext ctx = new PrincipalContext(ContextType.Domain. "YOURDOMAIN");

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, loginName);

if(user != null)
{
   string empID = user.EmployeeId;
}

Новые строго типизированные основные классы упрощают работус AD.

0 голосов
/ 11 мая 2010

Используемый запрос AD - очень просто:

DirectorySearcher ds = new DirectorySearcher();
ds.PropertiesToLoad.Add("employeeID");
ds.Filter = String.Format("(&(objectCategory=person)(sAMAccountName={0}))", loginName);

result = ds.FindOne();
if (result != null)
{
    personnelNumber = result.Properties["employeeID"][0].ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...