node.js - REST API 的基本身份验证的两因素身份验证?

标签 node.js rest basic-authentication two-factor-authentication

我正在实现一个 REST API,它同时具有移动应用程序和基于浏览器的客户端和用户。基于我在这里和 security.stackexchange 上提出的问题和之前的问题,我得出的结论是,要尽可能长时间地保持“RESTful”,基于 SSL 的 HTTP 基本身份验证足以进行身份​​验证。问题是我还想与它一起实现双因素身份验证。在 401 授权 header 响应中添加 header 是否可以接受,例如用户名:密码: token ,或者在完全独立的请求 header 中,但在与客户端的基本身份验证响应相同的有效负载中?由于我使用的是 node.js + express/connect,我可以访问整个 HTTP 协议(protocol)栈,但出于可伸缩性的原因,我希望尽可能保持安静。在浏览器端,我想我可以进行基本身份验证,如果它通过,则请求 TFA token ,只有当它通过时才认为用户已通过身份验证。

最佳答案

您可以在技术上构建新的身份验证方案以扩展 HTTP Basic Auth,但浏览器通常不支持它们。在您的示例中,我认为任何浏览器都无法以他们可以轻松请求用户名和密码的相同方式 native 请求和发送 username:password:token。

通常,双因素身份验证方案的工作原理是使用某种形式的 session 将用户置于中间状态,如您在第二个示例中提到的那样。通过了第一个因素的用户,比如通过基本身份验证的用户名/密码,打开了一个 session 但没有标记为真正登录,直到他们也通过了第二个因素。输入加密狗代码或类似的东西。一旦这两个因素都通过,他们的 session 将被标记为完全登录,他们可以访问他们的帐户/数据/任何内容。

关于node.js - REST API 的基本身份验证的两因素身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17035241/

相关文章:

node.js - React应用程序中的Socket io多个连接

python - 如何配置 ZeroRPC 和超时

javascript - 我可以从node_modules修改包吗?

java - 如何在 Jersey REST 方法中使用可选数量的参数?

rest - PUT 是否应该始终能够插入?

REST 服务基本身份验证 session 超时

Symfony2 + FOSUserBundle : http_basic authentication works, http_digest 失败

node.js - cURL 的 --form 的 axios 或 ajax 等效项是什么?

c# - Rally C# : Is it possible to create a new user story along with an attachment?(避免查询用户故事引用)

java - 使用 Java Restful 服务进行身份验证