【问题标题】:using X509 certificate thumbprint for user authentication使用 X509 证书指纹进行用户身份验证
【发布时间】:2018-07-28 01:15:44
【问题描述】:

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

我计划公开预计将由基于 WPF 客户端的应用程序使用的基于休息的端点。此外,客户端机器预计将安装为新客户端创建的 X509 证书,作为入职过程的一部分。证书指纹和用户映射是我计划安全存储的内容(比如使用 azure key vault)

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

如果未找到匹配项 - 服务器将返回 http 401 未授权状态代码。

我想了解在整个用户认证过程中是否存在任何不足、漏洞或缺陷?

附加信息:服务使用 ASP.NET MVC 应用程序框架构建并托管在 IIS 上。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 2014-05-01
      • 2010-11-08
      • 1970-01-01
      • 2019-01-03
      • 2023-03-29
      • 2012-01-10
      相关资源
      最近更新 更多