编辑-我改写了这个问题以(希望)更好地集中它。
需要交互的组件有:ASP.NET website <--> WCF service <--> 3rd party web service
第 3 方 Web 服务需要通过在构建代理期间指定网络凭据来进行 Windows 身份验证。例如:
ICredentials myCredentials = new NetworkCredential("myUsername", "myPassword", "myADdomain");
VendorWebService webService = new VendorWebService {Credentials = myCredentials};
据我所知,这是我们的 WCF 服务可以模拟用户访问 3rd 方 Web 服务的唯一方式。Windows 身份验证(通过网络凭据)是唯一受支持的模拟方式 - 无法在第 3 方 Web 服务和 WCF 服务之间建立某种信任。
该网站在服务帐户下运行,而不是在个人用户的帐户下运行。当我们的用户登录到我们的网站时,我们使用 ActiveDirectory 验证他们,但我们只是使用 AD 说“是的,这是一个有效的名称和密码组合”。
我需要一种方法来获取我在网站上知道的信息(用户名、密码)并将其转换为 WCF 服务上的网络凭据。我所读到的所有内容都表明,传递用户名/密码甚至网络凭据对象(如果可能的话)是一个很大的安全风险,也是一种非常糟糕的做法。
当网站不在用户帐户下运行时,可以使用哪些选项/技术使网站用户的 Windows 身份可用于 WCF 服务?
感谢您的任何见解。
PS 我确实找到了这篇文章:How do you pass user credentials from a process to another for Impersonation in .NET 1.1? 在我发布我的问题并且我正在使用它的内容之后。