带有IIS的CredentialCache与个人开发服务器

时间:2010-12-20 18:30:32

标签: c# ssis webserver credentials iis-5

我有一个我正在测试的网络服务。当我使用个人asp.net网络服务器时,随机端口的一切工作正常。当我将DefaultCredentials传递给ssrs服务器以运行报告时,它会使用我的凭据。

当我尝试将其移动到本地IIS服务器时,DefualtCredentials UserName为空,并且传递给SSRS服务器的ID为ASPNET。

我关闭了Annon访问权限,只启用了集成Windows身份验证。

我的本​​地IIS是5.1,因此它没有应用程序池作为单独的对象。

在web.config中设置身份验证

<authentication mode="Windows" /> 

提前致谢。

更新

<identity impersonate="true" />

现在,但我的问题比最初陈述的更棘手。

外部web服务调用SSRS webservice,现在它在浏览器中正常工作。 但是当我从SSIS中调用外部Web服务时,它不起作用,当我单步执行代码时,会调用外部Web服务,但是当我调用SSRS时,我收到401 Authentication错误。

我在HTTP Manager中有有效的凭据。我在EncryptSensitiveWithUserKey上有包保护级别。

再次,如果我从个人ASP.net网络服务器调用外部Web服务,即使SSIS工作正常。我只需要每次都下载wsdl,因为端口发生了变化,然后我必须重新设置webservice任务。我去生产时很担心。

(我还没有从代码中运行测试来查看web服务的行为)

更新2

web服务再次在IE中工作,但在SSIS和Firefox中都没有,即使我在点击网络服务时提供我的凭据

我知道我正在接受正确的身份验证,因为

User.Identity.Name 

在webservice中返回我的登录名,但是当我将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 :(得分:0)

这是我从微软收到的答案。

我很高兴早些时候通过电话小说讨论你的问题。正如我所说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.

因此,此时使用脚本任务调用Web服务将是一个选项,但是您提到将QA转移到UAT等将会遇到挑战。我同意您管理URL中的URL代理类是一个挑战。

如果您还有其他问题,请与我们联系。


现在即使这不是真的,因为我向微软的绅士展示了我们的网络服务确实需要Windows身份验证,但是无法正常工作被称为“双跳”。也就是说,凭据不会传递给SSRS服务器。