Извлечение пользователя AD с использованием User.Identity.Name в Web App - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь получить пользователя AD для веб-приложения для интрасети на основе имени, указанного в этом коде:

var userName = User.Identity.Name.Split('\\')[1];

, который возвращает DOMAIN \\ USER и разрезает его, чтобы я мог получитьпросто 'USER'.

Затем я передаю это в этот метод:

public bool DoesUserExist(string userName)
{
    using (var domainContext = new PrincipalContext(ContextType.Domain, Domain))
    {
        using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, userName))
        {
            return foundUser != null;
        }
    }
}

Запустив это на моем компьютере разработчика или опубликовав вживую, он всегда возвращает false.

Однако, если я делаю это:

var domainUser = UserPrincipal.Current;

Правильно извлекает пользователя (в данном случае меня), и когда я сравниваю SamAccountName и имя, которое я передаю в методе, они совпадают.Проблема с использованием этого заключается в том, что когда сайт публикуется в режиме реального времени, он получает только имя входа в пул приложений IIS, тогда как User.Identity.Name выбирает учетную запись пользователя на сайте.

I 'мы пытались передать имя без ограничения, и это тоже не сработало.

У меня заканчиваются идеи;Кто-нибудь знает, если я что-то пропустил здесь или есть какие-либо предложения, которые могут решить эту проблему?

1 Ответ

0 голосов
/ 18 октября 2018

Есть вероятность, что ваш Domain не верен?

Вы пробовали просто

using (var principalContext = new PrincipalContext(ContextType.Domain))

Это должно подключиться к домену по умолчанию

...