Angularjs 在基于浏览器的应用程序中,我在哪里存储OAuth刷新令牌

Angularjs 在基于浏览器的应用程序中,我在哪里存储OAuth刷新令牌,angularjs,security,oauth,local-storage,Angularjs,Security,Oauth,Local Storage,我正在本地存储中存储访问令牌和刷新令牌。这是正确的吗? 详细信息:我有一个angular 2应用程序。用户加载我的应用程序,然后使用我的api进行身份验证(用户名、密码)。它们提供了访问令牌和刷新令牌。客户端使用访问令牌直到其过期(15分钟),然后在遇到401错误后,使用刷新令牌(生存期为6个月)更新访问令牌 我的设置与此类似: 我也看到过类似的问题和建议,将刷新令牌存储在服务器上,但我不确定在我的情况下如何做到这一点(据我所知,客户端需要在本地保留该刷新令牌):保护刷新和访问令牌不受恶意访问

我正在本地存储中存储访问令牌和刷新令牌。这是正确的吗?

详细信息:我有一个angular 2应用程序。用户加载我的应用程序,然后使用我的api进行身份验证(用户名、密码)。它们提供了访问令牌和刷新令牌。客户端使用访问令牌直到其过期(15分钟),然后在遇到401错误后,使用刷新令牌(生存期为6个月)更新访问令牌

我的设置与此类似:


我也看到过类似的问题和建议,将刷新令牌存储在服务器上,但我不确定在我的情况下如何做到这一点(据我所知,客户端需要在本地保留该刷新令牌):

保护刷新和访问令牌不受恶意访问是个好主意。这可以来自XSS脚本、浏览器插件等

对于传统的web应用程序和浏览器cookie,可以使用
HttpOnly
Secure
标志进行一些保护。
HttpOnly
标志告诉浏览器不允许JS访问(仅将cookie发送到有请求的主机)。
Secure
标志指示浏览器仅在传输安全(TLS)的情况下发送cookie

刷新令牌应被视为密码或密钥,因为它可用于请求新的访问令牌。6个月的寿命是一个很大的暴露窗口。我会使用更短的时间跨度,使到期时间滑动。例如,天或周,并每隔一段时间刷新两个令牌

不幸的是,我还不知道如何保护本地存储。我希望我能在这方面提供更多帮助-(