1

我正在构建一个小型 ASP.NET Core 应用程序。其中一项要求是授予用户通过证书而不是使用登录名/密码对登录的能力。

登录页面示例

在此处输入图像描述

我找到了几个例子,通常它们基于以下方法

  1. 用户为选定的 Web 浏览器安装 CSP(加密服务提供商)插件(插件提供通过 JavaScript API 调用直接从浏览器访问用户证书存储、签名数据等的功能)

  2. 登录表单包含隐藏的输入字段,其中包含预先生成的 XML 文档。

xml文档示例

<loginrequest>
  <currentTimestamp>123456789012345678</currentTimestamp>
  <requestGuid>ba3d3b37-319f-4551-8c15-1abe4dce854e</requestGuid>
</loginrequest>
  • 用户从证书列表中选择证书
  • 用户按下登录按钮(登录按钮具有通过 CSP 浏览器插件签署 Xml 文档的 onClick 处理程序)
  • 表单已提交(表单字段包括 - 签名的 xml 文档数据、选定的证书指纹、原始 xml 文档)
  • 在服务器端签名的 xml 文档已根据指纹进行验证。如果签名有效,系统通过匹配指纹在数据库中搜索相应的用户(数据库中的每个用户都有指纹列)。如果发现用户,服务器会在让他进入时发出 JWT 访问令牌。

我对以下问题感兴趣

  • 这种方法是否有任何类型的规范(如 OAuth 2.0 中的 Mutual-TLS),其中包含有关 Xml 生成文档的内容以及如何正确验证它的详细信息?
  • 还有其他方法可以通过 ASP.NET Core Web 应用程序中的证书对用户进行身份验证吗?
4

0 回答 0