凭据提供程序通过网络进行通信

Posted

技术标签:

【中文标题】凭据提供程序通过网络进行通信【英文标题】:Credential Provider communicating over network 【发布时间】:2012-01-12 06:57:39 【问题描述】:

首先让我解释一下我想要的解决方案:

我正在制作一个自定义凭据提供程序,通过将登录凭据发送到外部身份验证服务器来对用户进行身份验证,然后将相同的凭据以及一些额外的身份验证参数传递回凭据提供程序。然后,凭据提供程序将这些凭据发送到本地安全机构,后者又根据自定义身份验证包对用户进行身份验证。

我对 Windows 编程很陌生,但我一直在研究 Credential Provider Technical Reference,所以我对它的工作原理有了一些了解。我还没有想到的是:在编写自定义凭据提供程序时,我可以像上面的示例中建议的那样对其进行编程以进行外部通信吗?我在某处读过我可以使用 WinHTTP 向凭据提供程序发送数据和从凭据提供程序发送数据。这是正确的吗?

问候, 巴泽拉

【问题讨论】:

【参考方案1】:

首先你需要实现IConnectableCredentialProviderCredential接口,它提供了一个叫做Connect的函数(这个方法将在GetSerialization之前被调用)所以在这个函数中你可以连接到你的认证服务器

【讨论】:

【参考方案2】:

我以前写过这样的提供程序。使用 WinHTTP 与外部实体进行通信没有问题。如果您有不寻常的 SSL 要求,您可能会遇到 HTTPS 的一些问题。您需要做的就是将证书加载到正确的存储区中。

【讨论】:

我遇到了同样的问题,我必须在凭据提供程序中进行 HTTP 调用?您可以发布示例工作代码吗?

以上是关于凭据提供程序通过网络进行通信的主要内容,如果未能解决你的问题,请参考以下文章

TCP通信程序

通过单向 UDP 连接保护用户凭据

基于证书的登录

登录时未通过凭据提供程序加载 KSP(密钥存储提供程序)

基于TCP协议的网络通信

Socket的通信机制?