Получить отдел пользователя от AD - PullRequest
0 голосов
/ 26 июня 2018

Работа с Active directory на веб-сайте ASP.net CORE MVC, Я могу получить много пользовательских свойств, таких как diplayName, emailAdress ... Но я не могу найти отдел пользователя.
Получение информации о пользователе :

UserPrincipal user = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain), Environment.UserName);

Но у пользователя нет свойства "Отдел".

Я попробовал:

DirectoryEntry directoryEntry = user.GetUnderlyingObject() as DirectoryEntry;
        var property = "department";
        if (directoryEntry.Properties.Contains(property))
        {
            var dep = directoryEntry.Properties[property].Value.ToString();
        }

Департамент недвижимости также не имеет.

EDIT

Вот список доступных свойств: "objectClass, cn, sn, title, description, userCertificate, givenName, distinguishedName, instanceType, whenCreated, whenChanged, displayName, uSNCreated, memberOf, uSNChanged, proxyAddresses, homeMDB, mDBUseDefaults, mailNickname, name, objectGUID, userAccountControl, badPwdCount, codePage, countryCode, badPasswordTime, lastLogon, pwdLastSet, primaryGroupID, objectSid, accountExpires, logonCount, sAMAccountName, sAMAccountType, showInAddressBook, legacyExchangeDN, userPrincipalName, objectCategory, dSCorePropagationData, lastLogonTimestamp, textEncodedORAddress, mail and Lot of msExchange"

1 Ответ

0 голосов
/ 26 июня 2018

Это работает для меня (используя смесь AccountManagement и DirectoryServices):

var ad = new PrincipalContext(ContextType.Domain, DOMAIN);
var u  = new UserPrincipal(ad) {SamAccountName = Environment.UserName};

using (var search = new PrincipalSearcher(u))
{
    var user = (UserPrincipal) search.FindOne();

    DirectoryEntry dirEntry = (DirectoryEntry)user.GetUnderlyingObject();
    string dept = dirEntry.Properties["Department"].Value.ToString();
    Console.WriteLine(dept);
}

Для этого требуется следующее using:

using System;
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
...