我正在实现一个 REST API,它同时具有移动应用程序和基于浏览器的客户端和用户。根据我在这里和 security.stackexchange 上提出的问题和之前的问题,我得出的结论是,要尽可能长时间地保持“RESTful”,基于 SSL 的 HTTP 基本身份验证足以进行身份验证。问题是我还想同时实现两因素身份验证。是否可以在 401 Authorization 标头响应中添加标头,例如用户名:密码:令牌,或者在完全独立的请求标头中添加标头,但在与客户端的基本身份验证响应相同的有效负载中?由于我使用的是 node.js + express/connect,因此我可以访问整个 HTTP 协议栈,但出于可扩展性的原因,我希望尽可能保持安静。在浏览器端,
问问题
3003 次
1 回答
7
您可以从技术上构建新的身份验证方案以扩展 HTTP 基本身份验证,但浏览器通常不支持它们。在您的示例中,我不相信任何浏览器能够以与他们可以轻松询问用户名和密码相同的方式本机询问和发送用户名:密码:令牌。
通常,双因素身份验证方案通过使用您在第二个示例中提到的某种形式的会话将用户置于中间状态来工作。通过第一个因素的用户,比如通过基本身份验证的用户名/密码,有一个会话打开但没有标记为真正登录,直到他们也通过了第二个因素。输入加密狗代码或类似的东西。一旦这两个因素都通过了,他们的会话就会被标记为完全登录,他们可以访问他们的帐户/数据/任何东西。
于 2013-06-11T05:21:58.133 回答