CredentialCache с IIS против личного сервера разработки - PullRequest
0 голосов
/ 20 декабря 2010

У меня есть веб-сервис, который я тестирую.Когда я использую личный веб-сервер 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.У меня есть уровень защиты пакета на EncryptSensitiveWithUserKey.

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

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

ОБНОВЛЕНИЕ 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

1 Ответ

0 голосов
/ 30 декабря 2010

Это ответ, который я получил от 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.

...