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

6
我正在实现一个用C#编写的凭据提供程序。
我已经下载了Windows 8下的V2 Credential Provider C++示例,并成功在我的Windows 10 PC上运行它。 我也研究了这个.NET凭据提供程序实现https://github.com/SteveSyfuhs/CredProvider.NET,但这是针对CredUI场景的。
我已经成功让我的凭据提供程序显示在用户图块的“登录选项”下,但现在我想实现登录部分。
我必须为登录/解锁场景实现GetSerialization方法。在C++示例中,这已经实现了,但我不熟悉C++,所以我有困难将其“翻译”成C#代码。
有人知道在C#中Logon/Unlock场景下可用的该方法的工作实现在哪里可以找到吗?任何帮助都将不胜感激。
2个回答

1
我看到你只熟悉C#,并希望在你正在处理的CP中仅使用它。
虽然我更喜欢使用C#,但我也用C++开发过CP,因为我更加灵活。

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


3
我使用了https://github.com/phaetto/windows-credentials-provider中的凭据平铺的GetSerialization方法的实现,成功使我的登录/解锁场景运行。为了使用瓷砖名称对应的用户名和我提供的密码,我必须对其进行一些更改,但是最终确实奏效了。无论如何,非常感谢! - user8069470
@SimonaCatana,您能否详细说明一下您是如何使解锁场景生效的?我正在使用同样的Github项目在Windows 10上编写CP,但我无法将当前用户与解锁场景的磁贴关联起来。 - Dbloom
很高兴听到@SimonaCatana已经解决了登录/解锁的问题。您可以详细说明您的实施方案,以帮助其他人更好地理解。 - Olorunfemi Davis
对于Kerberos凭据序列化,您可以在pGina项目中查看序列化辅助代码。 - James Westgate

1
你需要在C++中编写KerbInteractiveUnlockLogonInit和KerbInteractiveUnlockLogonPack方法,并使用DllImport从你的C#项目中调用它。根据CREDENTIAL_PROVIDER_USAGE_SCENARIO,你需要设置KERB_INTERACTIVE_LOGON结构体的MessageType属性。你可以从这里获取方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接