根据我目前在OAuth 2.0规范中所阅读的内容,建议不要在浏览器中存储可通过Javascript访问的任何机密信息。
这里的讨论似乎也同意这一点: Using OAuth2 in HTML5 Web App
我目前正在构建一个基于Ember的应用程序作为我的REST风格的API后端的前端,我使用Ember-Simple-Auth作为用于处理用户登录的库,它实现了资源所有者密码凭据工作流程和也明确支持刷新令牌。
我读到"Resource Owner Password Credentials" grant type in OAuth 2.0 allows the usage of refresh tokes,但本段中的文字是针对客户的一般定义而写的。
由于Ember.js是一个用于编写在浏览器中运行的单页webapps的框架,我现在想知道......
在Ember应用程序中使用刷新令牌是否安全?上面提到的讨论似乎不同意。这导致我:
为什么Ember-Simple-Auth支持刷新令牌?
感谢您抽出宝贵时间考虑。 最好!马库斯
答案 0 :(得分:3)
当刷新令牌没有过期时,使用刷新令牌的唯一不足之处就是不使用刷新令牌。因此,如果有人获得对您的计算机的物理访问权(或者某些信息已被HTTPS破坏),则访问令牌可能已经过期,而刷新令牌仍处于活动状态,并且可用于获取新的访问令牌(意味着安全漏洞永远存在) )。
对Ember.SimpleAuth的支持已经受到大众需求的支持。关于它有两点要说:除了用户起伏以确保没有人能够物理访问他们的机器(这是大多数网站所需的安全策略,因为没有网站通常会在会话期满或仅在很长时间后),客户端和服务器仅通过(正确设置)HTTPS进行通信至关重要。第二件事是,当服务器响应中有一个刷新令牌时,Ember.SimpleAuth只使用刷新令牌。因此,如果您关注这一点(我认为是对的),首先不要在服务器端启用刷新令牌。