在当前用户凭据下调用Web服务

时间:2011-03-01 17:08:17

标签: wcf windows-authentication defaultnetworkcredentials

我有一个自定义的WCF Web服务,其中包含Windows身份验证和需要调用前者的WPF客户端应用程序。该服务检查用户名并从数据库中提取一些特定数据。所以我必须使用运行该应用程序的用户的凭据来调用该服务。

问题是我的服务托管在另一个具有Windows身份验证的网站下,用户可以使用其他帐户进行身份验证。 Windows(或IE?)缓存最后使用的帐户,然后我的客户端应用程序也使用它!

示例:

我进入“MYDOMAIN \ AdminUser”

下的网站

我运行以下代码(来自客户端应用程序,它不是网络代码)

var client = new TestServiceClient();
var currentUser = WindowsIdentity.GetCurrent(); // just informative field nothing more, i don't use it anyhow
// currentUser.Name = "MYDOMAIN\\MyUserName" - it's current value, i'm not trying to set it
client.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
var data = client.GetTestData();

服务由“MYDOMAIN \ AdminUser”调用..

我知道我可以使用名称和密码创建NetworkCredential但是我必须将它存储在某个地方,然后将它等等...

澄清问题:在一个帐户下运行的客户端进程会自动调用另一个帐户下的服务,只是因为Windows提供了另一个凭据。“/ p>

0 个答案:

没有答案