验证Windows是否通过智能卡登录

时间:2012-05-22 17:07:38

标签: c# .net windows smartcard

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

我看一些网站: http://technet.microsoft.com/en-us/library/ff404285(v=ws.10).aspx http://www.codeproject.com/Articles/240655/Using-a-Smart-Card-Certificate-with-NET-Security-i

我认为我需要获得增强型密钥用法(EKU)属性字段。 如果EKU为空=>然后用户通过密码而不是智能卡。

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

1 个答案:

答案 0 :(得分:1)

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

选项1:当用户使用智能卡登录时,使用Authentication Mechanism Assurance为用户的访问令牌添加额外的群组成员资格,并将您的应用设置为需要该群组成员身份。这需要域到Windows Server 2008 R2功能级别。

选项2:Implement a credential manager并使用NPLogonNotify回调来检查KERB_INTERACTIVE_LOGONKERB_LOGON_SUBMIT_TYPE KerbSmartCardLogon,然后记录某个地方供您的应用检查。