使用C#的Windows凭据提供程序

Pau*_*and 10 .net c# credential-providers

有人在C#中成功创建了自定义Windows凭据提供程序吗?Windows SDK中的示例都使用C++.我做过的一些初步搜索表明它可能是可能的,但似乎找不到任何确认它的人.

rif*_*aco 11

pgina +1 .正如Cody所说,没有可用于创建凭证提供程序的托管API,如果您想使用pInvoke路由,则可能需要花费更多时间来解决pInvoke问题,而不是计算凭证提供程序.

pGina可以帮助你的地方是它有一个很好的插件架构,而插件是用托管代码编写的.请参见此处的图表.pGina处理与LogonUI(本机代码)的通信,但依赖于插件(托管)来进行实际身份验证,这可能是您想要控制的(否则您可能不需要自己的凭据提供程序).


mag*_*eos 5

Windows Vista及更高版本中的新CredentialProvider模型基于COM.这意味着只要您实现正确的COM接口就应该可行.

基于此,它应该比旧的GINA模型更容易构建,因为较旧的GINA模块使用DLL入口点和函数指针而不是COM接口.

鉴于.Net能够与COM进行交互,它应该像以下一样简单:

  1. 构建ICredentialProvider接口的C#定义,并使用正确的GUID添加正确的COM属性
  2. 构建实现ICredenitalProvider的凭证提供程序类,并标记为COMVisible(True)
  3. 使用Regasm注册新程序集
  4. 添加正确的注册表项以在Windows中注册新的CredentialProvider(Software\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers)

如果您完成所有这些,您将拥有一个使用C#编写的工作凭据提供程序