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

Posted

技术标签:

【中文标题】IIS 7 身份验证 - 仅允许智能卡登录证书【英文标题】:IIS 7 Authentication - Allow only Smart-Card logon certificates 【发布时间】:2015-04-19 11:38:37 【问题描述】:

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

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

我的问题是,通过一些配置更改,用户无需使用智能卡即可登录,只需使用自己的 Windows 证书。

实现该目标的最佳身份验证方式是什么?

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

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

感谢您的帮助。

【问题讨论】:

【参考方案1】:

您可以从证书中读取增强的密钥用法,并检查您正在验证的证书是否是智能卡。 通常,您对非智能卡的增强密钥使用将是客户端身份验证,而您对智能卡的增强密钥使用将是客户端身份验证 + 智能卡登录;这是我上周编写的示例代码,用于实现与您的要求类似的事情:

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 的内置方式,我不知道,但我认为以编程方式实现并不困难

【讨论】:

以上是关于IIS 7 身份验证 - 仅允许智能卡登录证书的主要内容,如果未能解决你的问题,请参考以下文章

匿名之前的 IIS Windows 身份验证

仅允许经过身份验证的用户访问 API 路由

IIS 7.5 Windows 身份验证失败,除非代码文件共享给最终用户

尽管如此,使用 Windows 身份验证的 IIS Web 应用程序仍会生成登录提示

IIS 7.5 即使在禁用时也使用模拟

智能卡如何用于客户端证书身份验证?