从ASP.NET Web应用程序到ASP.NET Web服务到SQL Server的身份验证

我有一个使用Windows Forms身份验证的ASP.NET(.NET 4.0)应用程序。 这对Active Directory进行身份验证,工作得很好。

此Web应用程序在同一台服务器上调用ASP.NET Web服务(.NET 4.0)。 应用程序和服务都在IIS 6上运行。

Web服务使用“Integrated Security = SSPI”作为连接字符串的一部分调用同一个域中的SQL Server 2005数据库。

我希望Web服务和数据库连接使用Web应用程序的登录用户的凭据。

我已经尝试了数十个网站设置的几十个组合,但没有任何工作。 我在第二天,没有到任何地方。

这甚至有可能吗?

在我最近的尝试中,我在调用Web服务之前在Web应用程序中添加了以下代码:

svc.Credentials = System.Net.CredentialCache.DefaultCredentials;

但在服务中,User.Identity.Name返回启动Web服务器的用户的值。


你想要做的就是所谓的“委托”。 这意味着最终用户使用Web服务器进行身份验证,然后Web服务器尝试使用这些凭据访问SQL Server。 但是SQL Sever不信任Web服务器,它只信任域控制器。 所以请求失败。

除了不工作,代表团还有另一个缺点。 因为每个用户都会使用不同的凭证,SQL连接将不再被合并。 每个证书都有自己的池。 即使在用户数量较少的情况下,这将成为主要的资源浪费。

有关更多信息,请查看此MSDN文章。

TL; DR:放弃授权并转到SQL身份验证。

链接地址: http://www.djcxy.com/p/74499.html

上一篇: Authentication from ASP.NET web app to ASP.NET web service to SQL Server

下一篇: ASP.NET Web Service call in another Thread