2

嗨,如果用户通过密码或智能卡登录到他的计算机,我需要在我的 WPF 应用程序中进行验证。这两种登录选项在我的公司客户端中都可用,但我的应用程序只需要在智能卡登录中打开。所有客户端都是windows 7操作系统。

我看一些网站: http ://technet.microsoft.com/en-us/library/ff404285(v=ws.10).aspx http://www.codeproject.com/Articles/240655/Using-a-带有 NET-Security-i 的智能卡证书

我想我需要获得增强的密钥使用(EKU)属性字段。如果 EKU 为空 => 则用户是通过密码而不是通过智能卡登录的。

我只需要这个简单的检查,我不关心在证书 atc 上创建/验证。

4

1 回答 1

2

Windows 不记录用于登录的证书,因此您无法检查 EKU,Windows 也不记录使用的凭据类型,因此没有简单的解决方案。我有几个建议:

选项 1:当用户使用智能卡登录时,使用身份验证机制保证向用户的访问令牌添加额外的组成员身份,并将您的应用设置为需要该组成员身份。这需要 Windows Server 2008 R2 功能级别的域。

选项 2:实现凭证管理器并使用NPLogonNotify回调来检查KERB_INTERACTIVE_LOGONKerbSmartCardLogon的 KERB_LOGON_SUBMIT_TYPE,然后将其记录在某处以供您的应用程序检查。

于 2012-06-01T10:27:11.187 回答