如何在单页面应用程序中实现身份验证?

时间:2013-07-18 03:47:32

标签: asp.net node.js

正如标题所说,我想构建一个在浏览器中使用Single Html页面运行的应用程序。但是如何实现Authentication.and我的解决方案是:

  1. 服务器端是所有RESTful API,可以由多个平台,Web,移动端等使用,并且每个需要auth的API将获得一个令牌进行解析,如果API没有获得令牌返回401。
  2. 因为我的第一次练习是在浏览器中,所以我需要请求令牌才能登录,当应用需要请求auth-API时,我会将令牌放在标题中以请求... < / LI>

    我的问题是:安全吗?还有其他更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果可以通过javascript访问令牌,那就不够安全,原因与您应将Cookie设置为仅限http并限制为ssl相同。 如果黑客可以将javascript注入你的应用程序,它可以窃取令牌并从他们的机器中使用它。

出于这个原因,我建议您在使用网站时使用安全的,仅限http的cookie而不是令牌。

如果您要从原生移动应用访问您的API,则可以为每个网址添加令牌。

在http请求中使用自定义标头可能会导致某些代理可能无法通过所有标头的问题。 Cookie只不过是标准化的http标头,因此您可以重用它。

如果您允许第三方应用访问您的部分API,您还可以考虑使用OAuth。

没有理由不能为基于浏览器的客户端使用cookie,也不能为其他客户端使用ApiKey查询参数。