如何在 Node/Express 中使用 CAC 对用户进行身份验证

Posted

技术标签:

【中文标题】如何在 Node/Express 中使用 CAC 对用户进行身份验证【英文标题】:How to authenticate user with CAC in Node/Express 【发布时间】:2020-01-20 20:22:51 【问题描述】:

我需要允许用户使用他们的 DoD 颁发的通用访问卡登录我的 react 网站。我正在使用 express api 作为身份验证服务器。我已将服务器配置为需要客户端证书:

const options = 
      key: fs.readFileSync(config.ssl.keyPath),
      cert: fs.readFileSync(config.ssl.certPath),
      ca: [fs.readFileSync(config.ssl.caPath)],
      requestCert: true,
      rejectUnauthorized: false,
    ;

    https.createServer(options, expressApp).listen(port);

如何让我的 react 应用从 CAC 请求/加载/读取证书?

【问题讨论】:

貌似可以在这篇文章中找到答案medium.com/@sevcsik/… 确保您的 ssl.caPath 中有相关的国防部 CA,否则浏览器可能不会提示用户选择证书/输入他们的密码 @imjosh 我在目录中有相关的 CA pem 文件。例如,我可以调用返回 OK 的 openssl verify -CAfile allCrts.pem myclient.pem。它是否正确?我现在只需要获取服务器证书和密钥吗? 【参考方案1】:

您需要创建一个 .PFX 证书并将其导入浏览器的证书存储区。生成的证书应由用于启动 Express 服务器的 CA 签名。导入浏览器的证书也应该启用“客户端身份验证”。

【讨论】:

以上是关于如何在 Node/Express 中使用 CAC 对用户进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Node.js / Express / Mongoose - 如何发送 JSON 以及对象视图?

如何解析 node.js、express.js、mysql2 中“rows”对象的数据

如何向 Node / Express 站点添加代理?

如何在 Node/Express 应用程序中处理 api 版本

如何使用 Node、Express、Axios 在 ReactJS 前端设置带有 JWT 令牌的 cookie

如何添加node express 为windows 启动服务器