2016-02-09 8 views
1

У меня есть сайт .NET, который оценивает учетную запись домена пользователей и захватывает некоторые данные из Active Directory.
Это нормально при работе локально через Visual Studio, но при развертывании при включенной проверке подлинности Windows (при отсутствии другого типа проверки подлинности) я могу получить только имя пользователя, в котором работает пул приложений.
Существует ли конкретный способ получить фактического пользователя, а не пользователя пула приложений? В настоящее время получает имя пользователя, как это:передать имя пользователя Windows на сайт

string _user = System.Security.Principal.WindowsIdentity.GetCurrent().Name.Remove(0, 8); 

также пытались

Page.User.Identity.Name; 
+1

Является ли сервер, на котором он развернут часть домена? – Mark

+0

приложение настроено на проверку подлинности Windows, а сервер находится в домене. – DarkW1nter

+0

@ DarkW1nter, можете ли вы показать строку кода, которую вы используете, чтобы получить пользователя ..? также на вашей странице есть какие-либо экраны входа вообще ..? – MethodMan

ответ

1

Несколько раз вы должны попробовать несколько различных путей получения информации Active Directory. Вот несколько способов, которые появляются в других постах:

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
string userName = Environment.UserName; 
string userName = HttpContext.Current.User.Identity 

Просто добавьте их, отлаживать через и посмотреть, если они возвращаются имя пользователя Iis а.

Здесь два пользователя Windows - первый пользователь вашего приложения, а второй пользователь (или учетная запись Windows), под которым работает приложение ASP.NET (пул приложений с точки зрения IIS). WindowsIdentity.GetCurrent обычно возвращает эту ссылку.

Для получения фактического пользователя Windows, использующего приложение, вы должны обеспечить аутентификацию. Для этого вы можете включить интегрированную проверку подлинности (проверку подлинности Windows) в IIS для указанного веб-сайта. Также измените конфигурацию ASP.NET, чтобы использовать проверку подлинности Windows. Теперь вы можете использовать HttpContext.Current.User.Identity, чтобы получить фактического пользователя.

<authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
</authorization> 
<authentication mode="Windows" /> 
+0

Создал ли он, как вы говорите, используемый HttpContext, но все еще получая пользователя пула приложений при просмотре с сервера, но не может аутентифицироваться при удаленном просмотре, поэтому я подозреваю, что это вопрос с разрешениями, который мне нужен, чтобы заставить ребята сервера посмотреть. Спасибо – DarkW1nter

+0

Вы можете попытаться отключить анонимную аутентификацию. См. Выше – MUlferts

+0

У меня включена только проверка подлинности Windows, с разрешения всех пользователей. При просмотре диалогового окна учетных данных, которое не должно, так как мой пользователь имеет права на сервер. – DarkW1nter