Классический ASP Request.ServerVariables ("LOGON_USER") возвращает неправильное имя пользователя - PullRequest
9 голосов
/ 24 февраля 2010

Классический ASP Request.ServerVariables ("LOGON_USER") возвращает неправильное имя пользователя. Вот сценарий:

У меня есть две учетные записи в домене, одна для администрирования и одна для обычного использования. Учетная запись администратора устанавливается как администратор (в группе «Администраторы») на сервере, на котором выполняется сценарий ASP. Сервер Windows 2003 под управлением IIS 6.0.

Я захожу на свой компьютер с моей обычной учетной записью пользователя и захожу на страницу, на которой возвращается имя пользователя учетной записи администратора. Почему это происходит ? Это хорошо работает для других.

<%
Response.Write "LOGON_USER: " & Request.ServerVariables("LOGON_USER") & "<br>"
Response.Write "REMOTE_USER: " & Request.ServerVariables("REMOTE_USER") & "<br>"
Response.Write "AUTH_USER: " & Request.ServerVariables("AUTH_USER") & "<br>"
Response.Write "<br>"
'Show all server variables
For Each Item In Request.ServerVariables
Response.Write Item & " = " & Request.ServerVariables(Item) & "<br>"
Next
%>

Анонимный доступ отключен, а проверка подлинности Windows включена.

Спасибо

Яри

Ответы [ 4 ]

5 голосов
/ 14 марта 2011

Основная проблема, вероятно, заключается в том, что у меня есть $ share, открытая для того же сервера с именем администратора, когда я выполняю сеансы asp на одном сервере с IE с обычным пользователем.Нормально это можно сделать из Панели управления -> Учетные записи пользователей -> Управление паролями -> Выберите нужный сервер и измените имя пользователя на правильное.Нет необходимости вводить пароль.ОК, Закрыть и Отменить.Возможно, вам придется открыть новый IE, чтобы изменения вступили в силу.

Это необходимо делать каждый раз, когда пользователь меняет «за кулисами».

2 голосов
/ 25 февраля 2010

Я не могу объяснить, что вы видите, на основе предоставленной информации. Я могу вам сказать, что учетная запись, под которой работает пул приложений, не имеет отношения к делу.

Классический ASP всегда олицетворяет пользователя как анонимную учетную запись пользователя, так и пользователя, связанного с подключением, на которое поступает запрос. В этом может быть ключ к вашей проблеме.

Аутентификация в ASP обрабатывается на уровне соединения, после того как соединение аутентифицировано, оно связывается с пользователем. Соединение может оставаться открытым для клиентов и других HTTP-устройств в нисходящем направлении. Все последующие запросы, поступающие на соединение, не нуждаются в повторной аутентификации, текущий пользователь, связанный с соединением, используется для предоставления пользовательского контекста, который поток, обрабатывающий запрос, олицетворяет.

Я видел посреднические устройства или прокси-серверы отладки (такие как fiddler), поддерживающие соединения и повторно использующие их для последующего запроса от множества клиентов. В этой ситуации возможно, чтобы клиент работал в одном пользовательском контексте, чтобы запрос обрабатывался веб-сервером в контексте другого пользователя. Противный!

Я видел подобные вещи на старых серверах Citrix Terminal. Соединения HTTP были разделены несколькими клиентами, работающими на терминальном сервере, что привело к пересечению контекста безопасности. Ой!

Другой вариант для этого - это когда доступ к ресурсу на сервере отклонен для текущего пользователя в интрасети. Браузер отображает диалоговое окно входа в сеть, и пользователь вводит пользователя с правами администратора. На время сеанса браузер теперь использует учетные данные администратора для доступа к другим ресурсам на том же сервере, даже если текущий вошедший в систему пользователь сделает это.

1 голос
/ 24 февраля 2010

Согласно документам MSDN по этой переменной:

Учетная запись Windows, которую пользователь олицетворяет при подключении к вашему веб-серверу. Используйте REMOTE_USER, UNMAPPED_REMOTE_USER или AUTH_USER для просмотра необработанного имени пользователя, которое содержится в заголовке запроса. Единственный раз, когда LOGON_USER содержит значение, отличное от этих других переменных, это если у вас установлен фильтр аутентификации.

Возможно, у вас есть фильтр аутентификации.

0 голосов
/ 24 февраля 2010

IIS, вероятно, работает от имени пользователя Admin, и вы получаете это имя. Пожалуйста, проверьте это на вашей стороне.

...