C#Webservice Proxy Windows身份验证

时间:2016-10-27 16:24:24

标签: authentication web service

我有一个c#应用程序,它通过客户端代理使用web服务。 Web服务设置为使用Windows身份验证(通过Active Directory进行HTTP 401挑战)。我的用户帐户已配置为有权访问Web服务。

当我通过浏览器调用Web服务时,它运行良好。浏览器能够执行401挑战并且不要求任何用户ID密码(因为服务器和客户端在内部通过AD控制器执行此操作)。

问题是当我尝试通过C#应用程序使用服务时,它会抛出HTTP请求未授权错误。

我已经尝试了以下所有webservice代理选项来进行Windows身份验证。

ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation
ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultCredentials as System.Net.NetworkCredential
ClientCredentials.Windows.AllowedImpersonationLevel =System.Security.Principal.TokenImpersonationLevel.Impersonation

有人可以帮助我如何像浏览器一样进行网络服务。调用服务时我无法传递用户ID和密码。

1 个答案:

答案 0 :(得分:0)

我想出了一个解决方法。使用HTTPWebRequest和Credentials = CredentialCache.DefaultCredentials,服务调用运行良好(HTTP 401 challange)。浏览器似乎使用相同的方法。问题是在创建客户端代理时无法做到这一点.4。挑战。

我无法弄清楚原因,但可能是服务没有足够的元信息来与客户端代理建立正确的握手。