编辑 - 我重写了这个问题(希望)更好地集中它。将NetworkCredentials对象传递给WCF服务
需要交互的组件包括: ASP.NET网站< - > WCF服务< - >第三方web服务
第三方Web服务通过contstruction过程中指定一个网络凭证要求Windows身份验证的代理人。例如:
ICredentials myCredentials = new NetworkCredential("myUsername", "myPassword", "myADdomain");
VendorWebService webService = new VendorWebService {Credentials = myCredentials};
据我所知,这是我们的WCF服务可以模仿用户到第三方Web服务的唯一途径。 Windows身份验证(通过网络凭证)是唯一受支持的模拟手段 - 无法设置第三方Web服务和WCF服务之间的某种信任。
该网站运行在服务帐户下,而不是个人用户的帐户。当我们的用户登录到我们的网站时,我们使用ActiveDirectory验证它们,但我们只是使用AD来说“是的,这是一个有效的名称和密码组合”。
我需要一种方法,让我知道网站(用户名,密码),并将其转换为WCF服务的网络凭证。我读过的所有文章都说,通过用户名/密码甚至网络凭证对象(如果可能的话)都是一个很大的安全风险和一个非常糟糕的做法。
当网站未在用户帐户下运行时,可以使用哪些选项/技术使网站用户的Windows标识可供WCF服务使用?
感谢您的任何见解。
P.S.我在发布我的问题后发现了这个帖子:How do you pass user credentials from one process to another for Impersonation in .NET 1.1?,并且我正在消耗其内容。