获取当前用户的NetworkCredential(C#)

时间:2009-06-04 08:51:08

标签: c# web-services authentication

我正在尝试从控制台应用程序调用Web服务,我需要为客户端提供System.Net.NetworkCredential对象。
是否可以为启动应用程序的用户创建NetworkCredential对象而不提示输入用户名/密码?

2 个答案:

答案 0 :(得分:45)

如果被调用的Web服务使用Windows集成安全性,则从当前NetworkCredential创建WindowsIdentity应足以允许Web服务使用当前用户Windows登录。但是,如果Web服务使用不同的安全模型,则无法从当前标识中提取用户密码......这本身就不安全,允许您(开发人员)窃取您的用户密码。您可能需要为用户提供一些提供密码的方法,并且如果您不希望他们重复提供密码,请将其保存在某个安全缓存中。

编辑:要获取当前标识的凭据,请使用以下命令:

Uri uri = new Uri("http://tempuri.org/");
ICredentials credentials = CredentialCache.DefaultCredentials;
NetworkCredential credential = credentials.GetCredential(uri, "Basic");

答案 1 :(得分:3)

您可以使用System.Security.Principal.WindowsIdentity.GetCurrent()获取用户名,但无法获取当前用户密码!