IIS 7身份验证 - 仅允许智能卡登录证书

时间:2015-04-19 11:38:37

标签: c# iis ssl certificate smartcard

我在一个允许打开该应用程序的用户必须使用智能卡登录的组织中工作。

每当用户加入(几乎每天)时,我们都会为该用户开发新的智能卡。

我的问题是,通过一些配置更改,用户可以在不使用智能卡的情况下登录,只需使用自己的Windows证书。

实现该目标的最佳认证方式是什么?

IIS 7中是否存在一种内置方式,只允许访问包含智能卡登录的证书?

该应用程序是用C#开发的。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以从证书中读取增强型密钥用法,并检查您要验证的证书是否为智能卡。 通常,非智能卡的增强密钥用法是客户端身份验证,智能卡的增强密钥用法是客户端身份验证+智能卡登录;这是我上周写的示例代码,用于实现与您的要求相似的内容:

var validCertsAssignedToUserOrderBySmartCardValidFromDate = from cert in validCertsAssignedToUser
                                                                        from ext in cert.Extensions.OfType<X509EnhancedKeyUsageExtension>()
                                                                        from usage in ext.EnhancedKeyUsages.OfType<Oid>()
                                                                        let isSmartCard = (ext.Oid.FriendlyName == "Enhanced Key Usage" && usage.FriendlyName == "Smart Card Logon") ? 0 : 1
                                                                        orderby isSmartCard
                                                                            , cert.NotBefore descending
                                                                        select cert;

就IIS 7内置方式而言,我不知道,但我认为难以以编程方式实现

答案 1 :(得分:0)

在智能卡或USB令牌中使用证书或数字签名证书进行的身份验证可以在C#Web(IIS)应用程序中实现。为此浏览器需要访问智能卡。一旦插入智能卡,就可以通过本地设备证书存储(通过智能卡驱动程序和CSP)在智能卡中使用证书(而不是保留在智能卡中的私钥)。浏览器将能够通过本地安装的浏览器扩展主机应用程序访问证书存储。

有关完整的JavaScript代码和流程图,请参阅SO Answer

相关问题