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

Posted

技术标签:

【中文标题】使用 C# 的 Windows 10 凭据提供程序【英文标题】:Windows 10 Credential Provider with C# 【发布时间】:2018-01-05 11:37:07 【问题描述】:

我正在努力在 C# 中实现凭据提供程序。

我已经下载了适用于 Windows 8 的 C++ V2 Credential Provider 示例,并设法让它在我的 Windows 10 PC 上运行。 我还研究了 .NET https://github.com/SteveSyfuhs/CredProvider.NET 中的凭据提供程序实现,但这是针对 CredUI 场景的。

我已设法使我的凭据提供程序显示在用户磁贴的“登录选项”下,但现在我想实现登录部分。

我必须为登录/解锁场景实现 GetSerialization 方法。在 C++ 示例中,这已经实现了,但是由于我不熟悉 C++,因此我很难将其“翻译”成 C# 代码。

有谁知道我可以在 C# 中为登录/解锁场景找到此方法的工作实现吗?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我发现您只熟悉 C#,并且只想将其用于您正在处理的 CP。 我曾使用 c++ 处理 CP,但我也更喜欢使用更敏捷的 C#。

如您所说,在 C++ 示例中未完全实现锁定/解锁。您必须在正确的位置拦截代码才能在项目中添加其他规则/功能。 无论如何,你可以粘贴一些代码,让我们一起研究一下。

【讨论】:

我已经设法使登录/解锁方案适用于我的案例,方法是使用来自 github.com/phaetto/windows-credentials-provider 的凭证磁贴的 GetSerialization 方法的实现。为了使用磁贴所在的用户名和我提供的密码,我必须对其进行一些更改,但它最终起作用了。无论如何都非常感谢! @SimonaCatana 你能详细说明你是如何让解锁场景工作的吗?我正在使用同一个 Github 项目在 Windows 10 上编写 CP,但在将当前用户关联到解锁场景的磁贴时遇到问题。 很高兴听到您整理了@SimonaCatana 的登录/解锁场景。您可以更清楚地了解您的实施以帮助他人。 对于Kerberos的凭证序列化,您可以在pGina项目中查看序列化助手代码。

以上是关于使用 C# 的 Windows 10 凭据提供程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 V2 CP 示例自定义 Windows 10 凭据提供程序?

凭据提供程序使用方案:从Windows 10中删除了CPUS_UNLOCK_WORKSTATION

C# 尝试打开远程文件位置但 Windows 未传递凭据

使用自定义凭据提供程序时,登录屏幕上出现多个磁贴

C++ Windows 凭据提供程序进度屏幕

使用 Windows 7 SDK 的凭据提供程序示例