.net - 如何使用存储的凭据调用 Web 服务?

标签 .net web-services security authentication

我需要调用在 Windows 域中运行的 Web 服务,该域与运行(Windows 窗体)客户端的域不同。Web 服务使用 Windows 身份验证进行保护。

Web 服务域的域凭据保存在客户端的用户配置文件中(在 XP 中保存用户名和密码),但我一直无法弄清楚在调用 Web 服务时如何使用这些保存的凭据。我发现了很多使用

的例子
WebService1.Credentials = System.Net.CredentialCache.DefaultCredentials 

(这不起作用,因为它是本地域的凭据)

WebService1.Credentials = new NetworkCredentials(username, pwd, domain) 

(如果用户名、密码、域是硬编码的)。

我已经阅读了有关使用 Windows API 使用 CredEnumerateCredRead 的内容,但不知道如何(或是否)我可以转换 PCREDENTIAL 到托管 NetworkCredential(ReadCred 不会返回存储的域凭据的密码)

SO 上有人知道怎么做吗?

谢谢!

最佳答案

我不相信你可以直接使用它们。我相信您必须提示用户输入它们,然后一旦用户提供它们,您就可以再次提示。 Here is an article on how to do that .毕竟,如果您只能从 DPAPI 获取凭据,那将达不到目的。 :)

这是一些信息。万一有帮助...

在 DPAPI 中保存数据的管理器称为 Key Manager .您可以通过执行开始->运行...从 UI 访问 key 管理器。

rundll32.exe keymgr.dll, KRShowKeyMgr

一般而言,存储身份验证函数的API是ADVAPI32。 .您也许可以在其中找到可以帮助您的东西。这是一个 decent article在那个 API 上。

当您将凭据添加到 CredentialCache 时,您还可以尝试 authType "Negotiate"作为described here .

抱歉,这只是一个研究转储——我没有找到答案,但希望其中的一些可以帮助你。 GL.

关于.net - 如何使用存储的凭据调用 Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/994232/

相关文章:

c# - 禁用计时器 .. 为什么我不能?

c# - 在 MVC2 中按角色限制 View 的最佳实践

c# - 多平台支持的 WCF Restful 服务文件上传

c# - 从外部库提供静态文件

java - JAX-WS + hibernate + JAXB : How to avoid LazyInitializationException during marshalling

web-services - 如何发布可通过浏览器访问的 Web 服务生成的数据文件

php - 安全问题?

sql - CMS 的 MySQL 用户的推荐 SQL 权限

.net - 嵌入 WPF 应用程序的诊断/基准测试工具

web-services - 多个 Web 服务的集中身份验证和授权