CredentialCache с IIS против сервера персональной разработки

У меня есть веб-сервис, который я тестирую. Когда я использую персональный веб-сервер asp.net, тот, у которого случайный порт, все работает нормально. Он использует мои учетные данные, когда я передаю DefaultCredentials на сервер ssrs для запуска отчета.

Когда я попытался переместить его на свой локальный сервер IIS, имя пользователя DefualtCredentials было пустым, а идентификатор, передаваемый на сервер SSRS, был ASPNET.

Я отключил доступ к Annon, и включена только встроенная проверка подлинности Windows.

Мой локальный IIS - 5.1, поэтому у него нет пулов приложений как отдельного объекта.

В web.config установлена ​​аутентификация

<authentication mode="Windows" /> 

Заранее спасибо.

ОБНОВЛЕНИЕ У меня есть

<identity impersonate="true" />

сейчас, но моя проблема сложнее, чем было заявлено изначально.

Внешний веб-сервис вызывает веб-сервис SSRS, и теперь он отлично работает в браузере. Но когда я вызываю внешний веб-сервис из SSIS, он не работает. Когда я просматриваю код, происходит вызов внешнего веб-сервиса, но когда я вызываю SSRS, я получаю ошибку аутентификации 401.

У меня есть действующие учетные данные в HTTP Manager. У меня уровень защиты пакета EncryptSensitiveWithUserKey.

Опять же, если я вызываю внешний веб-сервис с личного веб-сервера ASP.net, даже SSIS работает нормально. Мне просто нужно каждый раз загружать wsdl, потому что порт меняется, а затем мне нужно заново настраивать задачу веб-сервиса. Меня беспокоит, когда я иду на производство.

(Мне еще предстоит запустить тест из кода, чтобы увидеть, как работает веб-сервис)

ОБНОВЛЕНИЕ 2

Опять же, веб-сервис работает в IE, но не в SSIS или Firefox, даже когда я предоставляю свои учетные данные, когда я нажимаю на веб-сервис.

Я знаю, что прохожу аутентификацию правильно, потому что

User.Identity.Name 

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

Dim win As System.Security.Principal.WindowsIdentity = CType(User.Identity, System.Security.Principal.WindowsIdentity)
Dim context As System.Security.Principal.WindowsImpersonationContext = win.Impersonate()

    reportService.Credentials = System.Net.CredentialCache.DefaultCredentials

person Mike    schedule 20.12.2010    source источник
comment
Ваш web.config содержит олицетворение? Вы можете попробовать включить олицетворение, иначе учетные данные должны быть «учетной записью IIS», например «ASPNET» (если я все еще правильно помню IIS 5).   -  person Marvin Smit    schedule 20.12.2010
comment
Да, я дошел до этого, см. Обновленную информацию   -  person Mike    schedule 21.12.2010


Ответы (1)


Это ответ, который я получил от Microsoft.

Мне было приятно обсудить ваш вопрос по телефону ранее. Как я уже говорил, диспетчер HTTP-соединений не поддерживает проверку подлинности Windows, ознакомьтесь со статьей по адресу: http://msdn.microsoft.com/en-us/library/ms140114.aspx

Important

The HTTP connection manager supports only anonymous authentication and basic 
authentication. It does not support Windows Authentication.

Итак, на данном этапе использование задачи сценария для вызова веб-служб было бы вариантом, однако вы упомянули, что возникнет проблема с перемещением пакета из QA в UAT и т. Д. Я согласен с вами, что управление URL-адресом в классе прокси - это вызов.

Пожалуйста, дайте мне знать, если у вас возникнут дополнительные вопросы.


Теперь даже это неверно, потому что я показал джентльмену из Microsoft, что наша веб-служба требует проверки подлинности Windows, но то, что не работает, известно как «двойной прыжок». То есть учетные данные не передаются на сервер SSRS.

person Mike    schedule 30.12.2010