【问题标题】:Call a com object using a credential provider使用凭据提供程序调用 com 对象
【发布时间】:2012-12-01 05:33:38
【问题描述】:
我想创建一个应用程序来登录 Windows,该应用程序将使用 QR 码、图形密码和 Kinect 运动密码用于我的学校项目。
我了解到我需要使用凭据提供程序。这是我第一次使用它,非常困惑。
我的问题是:是否可以使用上述方法创建一个应用程序,然后让凭据提供程序调用该应用程序?我做的应用程序必须是一个com对象吗?
提前致谢!
【问题讨论】:
标签:
windows
authentication
com
windows-authentication
credential-providers
【解决方案1】:
好消息 --- 是的,有可能!
坏消息 --- 你有很多工作要做;)
作为建议,最好让您的凭据提供程序尽可能简单,并且所有用户身份验证工作都通过
二维码、图形密码和Kinect运动密码
将放入另一个应用程序。因此,凭据提供程序会将输入的凭据传递给该应用程序,并会收到身份验证结果。该应用程序将做最艰苦的工作。这个应用程序应该是一个 Windows 服务,因为它总是在运行关于是否有任何用户会话。例如,应用程序和凭据提供程序之间的通信可以通过命名管道或任何其他 ipc 机制来完成。
其他问题:
凭据提供程序本身就是一个 COM。
要与其他应用程序通信,它们不必是 COM。
只要您拥有足够的权限,您就可以使用来自凭证提供者的任何应用。
【解决方案2】:
进程不必是服务,你可以从你的 COM 对象启动 exe。
你可以做的是 regasm / codebase 你的 COM 对象,然后在 Initialize() 中从 Credential Provider 后期绑定到它
在 GetSerialization() 中,您将调用 COM 对象中的方法,该方法启动进程(exe)并通过命名管道连接。它将您需要的值返回给凭据提供程序,然后您继续登录。