【发布时间】:2016-03-22 17:47:33
【问题描述】:
我正在使用 AngularJS 客户端创建一个网站,并在 REST 中与后端(在其他域中)进行通信。
为了验证每个调用,我通过每个 HTTPS 调用的标头传递一个令牌:“Authorization : Bearer access_tokenXXXXXX”
当令牌过期时,我可以通过 refresh_token 创建一个新令牌。
access_token和refresh_token需要保存在客户端,因为浏览器需要在HTTP请求头中设置之前以明文形式保存。
我的问题是:
问题 1:存储 access_token 和 refresh_token 以使其对浏览器可用的推荐方式是什么,这样相对安全? (我有私人照片等敏感数据)
问题 2:access_token 和 refresh_token 的建议生命周期(= 不可用前的时间)是多少? (仅供参考,我在 401 响应后刷新令牌,我的应用是社交应用)
问题 3:我有架构问题吗?我是否应该更改它以便根本不使用令牌的 JavaScript,并使用 HTTP-ONLY cookie?
谢谢:)
杰弗里
更新:
我最终选择了 HTTP-ONLY cookie。我正在使用 Django Oauth Toolkit,因此 Django 正在等待 HTTP 标头中的授权,而不是 cookie 中的授权。
为了解决这个问题,我使用了一个中间件来收集 cookie 的令牌并将其设置在标头中。它还应该允许我在 access_token 过期之前重新验证用户(使用刷新令牌)。
【问题讨论】:
标签: security browser access-token restful-authentication