0

目前,我的身份验证流程如下:

  1. 用户在客户端浏览器应用程序(准确地说是 AngularJS)中填写登录表单,用户名和密码存储到浏览器的内存中(纯 Javascript 变量)。

  2. 访问受保护的 API 资源时,请求通过 SSL 上的 HTTP Basic Auth 使用存储在内存中的凭据进行身份验证。

问题是,当用户刷新页面时,她的凭据被清除,她需要重新登录。我在这里遗漏了一些明显的东西吗?

到目前为止我发现的解决方案很少:

  1. 将用户名和密码存储到 cookie 中:这显然不安全,即使使用安全 cookie 和/或加密也是如此。

  2. 使用会话 cookie:这似乎违反了 RESTful 的无状态原则。

(我猜 OAuth 在客户端中安全存储访问令牌有同样的问题?)

4

2 回答 2

0

这个答案的启发,我最终做了这样的事情链接打开了一张相当大的图片)。

简而言之,客户端将访问令牌存储在 javascript 变量中,但刷新令牌存储在服务器端会话中(在托管我们客户端应用程序的服务器上,而不是在 API 服务器上)。

于 2013-07-12T15:04:03.840 回答
0

会话 cookie 在这里完全没问题。安装后,您不再关心它们,浏览器将通过标头将它们与每个请求一起发送。

于 2013-07-04T10:19:54.390 回答