我将访问令牌和刷新令牌都存储在本地存储中。这是正确的吗?
详细信息:我有一个角度2应用程序。用户加载我的应用程序,然后用我的api验证(用户名,密码)。它们具有访问令牌和刷新令牌。客户端使用访问令牌直到它到期(15分钟),然后在遇到401错误后,使用刷新令牌(6个月的生命周期)来更新访问令牌。
我的设置类似于: Make certain area of bitmap transparent on touch
我已经看到类似的问题和建议在服务器上存储刷新令牌,但我不确定我在我的情况下如何做到这一点(据我所知,客户端需要保持这一点)在本地刷新令牌):http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/
答案 0 :(得分:0)
保护刷新和访问令牌免受恶意访问是一个好主意。这可以来自XSS脚本,浏览器插件等。
对于传统的Web应用程序和浏览器cookie,使用HttpOnly
和Secure
标志可以提供一些保护。 HttpOnly
标志告诉浏览器不允许JS访问(仅将cookie发送给具有请求的主机)。 Secure
标志告诉浏览器仅在传输安全(TLS)的情况下才发送cookie。
刷新令牌应被视为密码或密钥,因为它可用于请求新的访问令牌。 6个月的寿命是暴露的一大窗口。我会使用更短的时间,并使到期日滑动。例如,几天或几周,并经常刷新两个令牌。
不幸的是,我还不知道如何保护本地存储。希望我能在这方面提供更多帮助。 :-(