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