При олицетворении не удается выполнить авторизацию с одинаковыми учетными данными на рабочих станциях A и B

Случай 1. Когда я просматриваю небольшой тестовый сайт со своего ПК под названием JOHNXP (например, http://localhost/WebClient) , моя страница .aspx вызывает мой веб-сервис ASMX, собирает мои учетные данные и передает их другому веб-сервису на ДРУГОЙ машине (SERVERTRIM) в том же домене. Я вижу, что мой запрос приводит к появлению записи в журнале безопасности на компьютере SERVERTRIM с моими учетными данными.

Случай 2. Я перехожу на другой компьютер в том же домене и вхожу в систему с теми же учетными данными, которые использовались на моем личном рабочем столе. Когда я просматриваю тот же тестовый сайт, указанный выше (на этот раз как http://johnxp/WebClient), я получаю это обратно. на мою страницу .aspx:

System.Web.Services.Protocols.SoapException: серверу не удалось обработать запрос. ---> System.Net.WebException: запрос завершился неудачно со статусом HTTP 401: неавторизован

Глядя на журнал безопасности на SERVERTRIM, я заметил, что доступ в случае 2 привел к АНОНИМНОМУ ВХОДУ, который, кажется, объясняет ошибку 401 / Unauthorized.

Я пытаюсь заставить свой веб-сервис использовать учетные данные зарегистрированного пользователя DOMAIN, когда мой WS вызывает веб-сервис поставщика на другом сервере.

Мой веб-сервис ASMX работает на моем рабочем столе (IIS 5.1 WinXP Pro - имя компьютера JOHNXP). У меня есть Enable anonymous UNCHECKED на каждом задействованном сервере, и у меня это есть в каждом файле web.config, задействованном в моем сценарии:

Веб-сервис поставщика работает на SERVERTRIM (Win 2003 Server), он также является ASMX и использует WSE 3.0.

Wireshark и Netmon сейчас выглядят для меня слишком грозными инструментами. Я полагаю, что различные результирующие ВХОДЫ на «удаленном» сервере (SERVERTRIM) являются достаточным «свидетельством». Все машины, указанные выше, находятся в одном домене, но я хочу, чтобы «удаленный» веб-сервис на SERVERTRIM, а мой промежуточный веб-сервис - на другом сервере в том же домене, если это возможно. Требует ли этот сценарий, чтобы я копался в «делегировании»? Какой самый простой инструмент для отслеживания того, почему одни и те же учетные данные приводят к АНОНИМНОМУ ВХОДУ, когда веб-запрос инициируется на другом компьютере в домене?


person John Adams    schedule 22.04.2009    source источник


Ответы (1)


Мои знания об аутентификации немного туманны, но если я правильно понял ваше описание:

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

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

person Joe    schedule 22.04.2009
comment
Джо, я думаю, ты правильно это описал. Компьютер со вторым именем - JOHNXP и помечен как доверенный компьютер для делегирования. Кроме того, веб-сервис, работающий на JOHNXP, запускается из VisualStudio2005, когда я вошел в систему как CBMIWEB \ johna. Когда в документе для делегирования говорится, что нужно настроить учетную запись пользователя, под которой запускается процесс сервера, я понял, что это означает, что CBMIWEB \ johna и ActiveDirectoy имеет учетную запись доверенной для делегирования, теперь ПРОВЕРЕННО. Я проверил оба способа, но он все равно не работает. - person John Adams; 23.04.2009
comment
Когда вы говорите запуск WS с VS2005, вы имеете в виду сервер Cassini или IIS? А если IIS у вас точно запускается под учетной записью домена? - person Joe; 24.04.2009