Getting NetworkCredential for current user (C#)
我正在尝试从控制台应用程序调用Web服务,并且我需要为客户端提供System.Net.NetworkCredential对象。
是否可以为启动应用程序的用户创建NetworkCredential对象,而不提示输入用户名/密码?
如果所调用的Web服务使用Windows集成安全性,则从当前WindowsIdentity创建NetworkCredential应该足以允许Web服务使用当前用户的Windows登录名。但是,如果Web服务使用不同的安全模型,则没有任何方法可以从当前身份中提取用户密码……这本身就是不安全的,从而使开发人员可以窃取用户密码。您可能需要为用户提供某种方式来提供其密码,如果您不希望他们重复提供密码,则将其保存在安全的高速缓存中。
编辑:要获取当前身份的凭据,请使用以下命令:
1 2 3
| Uri uri = new Uri ("http://tempuri.org/");
ICredentials credentials = CredentialCache .DefaultCredentials;
NetworkCredential credential = credentials .GetCredential(uri, "Basic"); |
-
如何从WindowsIdentity创建NetworkCredential?
-
谢谢!我只是使用了CredentialCache.DefaultNetworkCredentials。
-
GetCredential方法是否从Windows XP / 2003 / Vista / 2008中存储的用户名和密码返回凭据?我在这里问了一个相关的问题:stackoverflow.com/questions/994232/…如果GetCredential根据uri从商店中检索凭证
您可以使用System.Security.Principal.WindowsIdentity.GetCurrent()获取用户名,但无法获取当前用户密码!
- 我希望没有办法获得当前的用户密码! :)我想做的是使用"当前凭据"作为Web服务的默认值。