Как получить имя пользователя в данный момент зарегистрированного пользователя удаленного компьютера через веб-сайт, когда ваш веб-сервер находится в той же сети? - PullRequest
2 голосов
/ 13 ноября 2011

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

Теперь мои настройки таковы. около 50 клиентов работают под управлением Windows XP Professional. Один сервер под управлением Windows Server 2003. Назовите его сервером A Один сервер работает под управлением Squid в качестве прокси-сервера и ОС Linux. назвать это сервером B Один сервер работает под управлением Apache (хотя сервер wamp). назовите это сервером C. Теперь клиенты входят в домен, используя Windows Active Directory, а сервер домена - это сервер A. теперь браузеры настроены на использование прокси-сервера, который является сервером B.

Прокси-сервер настроен на запрет загрузок, превышающих лимит (т. Е. 100 МБ в моем случае). и когда клиент делает запрос, превышающий лимит, пользователю показывается страница с ошибкой.

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

Теперь, что я мог сделать, так это просто попросить имя пользователя или адрес электронной почты и т. Д ... но я хочу спасти пользователя от повторного ввода его имени.

Я пробовал следующие варианты.

  1. .NET http://www.codeproject.com/KB/cs/getusername.aspx (не работает. может быть, я что-то пропустил)
  2. wmic http://www.robvanderwoude.com/ntadmincommands.php#Cmd02 (работал)
  3. аутентификация через squid (ldap, активный каталог и т. Д.)

теперь у меня есть вопросы по этому поводу.

  1. Это все варианты, которые у меня есть, или я что-то упустил?
  2. почему не работает опция .NET?
  3. Я могу использовать любой из различных методов аутентификации squid, но я думаю, что всем потребуется, чтобы пользователь вошел в систему хотя бы один раз после входа в систему на компьютере. Я не хочу этого. Есть ли способ, с помощью которого я могу просто использовать аутентификацию, выполненную, когда пользователь вошел в систему, и больше не запрашивать у него имя пользователя и пароль?

1 Ответ

2 голосов
/ 13 ноября 2011

Чтобы получить логин домена пользователя, в приложении ASP.Net необходимо использовать Request.ServerVariables("logon_user").

Однако есть и другие соображения:

1) Для веб-сайта должна быть включена только аутентификация Windows.

2) В браузерах вашего пользователя (при условии, что IE) должен быть включен Enable Integrated Windows Authentication.

3) Если запрос от браузера к приложению ASP.Net является косвенным (т. Е. Более 1 скачка), то вам нужно будет убедиться, что все задействованные системы настроены для проверки подлинности Kerberos (что может быть очень "). сложный ").

Вы также можете настроить ASP.Net для подражать конечному пользователю , что позволит вашему исходному коду работать правильно. Однако это означает, что все, что происходит в потоке (доступ к базе данных, доступ к файлам и т. Д.), Будет выполняться как конечный пользователь.

...