Как мне получить домен имя пользователя из вызова службы WCF, выполняемого из приложения MVC?

#c# #asp.net #asp.net-mvc #wcf #service

#c# #asp.net #asp.net-mvc #wcf #Обслуживание

Вопрос:

У меня есть ASP.NET служба, размещенная в IIS, запускает пул приложений с учетной записью службы. Мне нужно получить имя пользователя и домен пользователя, вызывающего службу, с контроллера MVC. Как я могу получить необходимые данные? Данные должны быть получены в сервисе, а не отправлены из приложения MVC. Я пытался использовать WindowsIdentity.GetCurrent().Name но он дает мне данные учетной записи службы.

Ответ №1:

Вы можете попробовать использовать HttpContext.Current.User .Идентификация.Имя и необходимость включить проверку подлинности Windows в IIS:

 HttpContext.Current.User.Identity.Name
 

Получение имени пользователя в ASP.NET:

Сценарий 1: Анонимная аутентификация в IIS с отключенным олицетворением:

введите описание изображения здесь

Как вы можете видеть, где мы работаем с анонимной аутентификацией HttpContext.Current.Запрос.LogonUserIdentity — это анонимный гостевой пользователь, определенный в IIS (IUSR_COMPUTER1 в этом примере), и поскольку пользователь не аутентифицирован, WindowsIdentity устанавливается равным идентификатору запущенного процесса (ASPNET) и HttpContext.Current.User .Идентификатор не установлен.

Сценарий 2: проверка подлинности Windows в IIS, олицетворение отключено:

введите описание изображения здесь

Однако использование проверки подлинности Windows позволяет удаленному пользователю проходить проверку подлинности (т.Е. IsAuthenticated имеет значение true) автоматически через свою учетную запись домена и, следовательно, HttpContext.Current.Для пользователя запроса устанавливается учетная запись пользователя удаленных клиентов, включая объект Identity.

Сценарий 3: Анонимная аутентификация в IIS, олицетворение на:

введите описание изображения здесь

На этот раз мы используем анонимную аутентификацию, но теперь с ASP.net Олицетворение включено в web.config. Единственное отличие от первого сценария заключается в том, что теперь анонимный гостевой пользователь IUSR_COMPUTER1 олицетворяется и, следовательно, System.Environment и Security.Принцип заключается в использовании привилегий этой учетной записи.

Сценарий 4: проверка подлинности Windows в IIS, олицетворение на:

введите описание изображения здесь

Теперь с проверкой подлинности Windows и олицетворением все выполняется как учетная запись домена нашего вызывающего пользователя. Это означает, что ASP.net рабочий процесс будет совместно использовать привилегии этого пользователя.