使用X509证书指纹进行用户身份验证

时间:2018-02-17 06:07:19

标签: asp.net-mvc authentication x509certificate client-certificates

使用证书指纹进行身份验证和唯一标识用户是否可以?以下是我试图解决的用例:

我计划公开基于休息的终点,预计将由基于WPF客户端的应用程序使用。此外,客户端计算机还应安装为新客户端创建的X509证书,作为入职流程的一部分。证书指纹和用户映射是我计划在最后安全存储的(例如使用azure密钥库)

现在,只要收到API服务请求,我的身份验证管理器就会提取附带该http请求的证书,并使用相应的指纹来从映射存储中获取用户信息,如上所述。

如果未找到匹配项,服务器将使用http 401未授权状态代码回复。

我想了解整个用户身份验证过程中是否存在任何缺点,循环漏洞或缺陷?

其他信息:服务是使用ASP.NET MVC应用程序框架构建的,并托管在IIS上。

注意:请不要建议基于AAD /令牌的身份验证 - 我已经评估了这些选项并决定不采用(不是因为任何技术挑战,而是因为我无法解释的因素)在这里)

1 个答案:

答案 0 :(得分:1)

您的建议与证书固定类似。它高度依赖于您的客户端证书管理。客户端证书有时会过期,有时会丢失/被盗等等。如果您可以使用Web API处理证书替换并使其与内部数据库保持同步,那么它就足够可靠了。

但是,我建议对证书执行额外检查(例如,主题备用名称扩展名中的UPN值)以减少指纹冲突的可能性(目前,Microsoft使用SHA1进行指纹计算)。