我有一个React + Redux应用程序,它与AWS Resources(例如DynamoDB)进行对话。要访问DynamoDB:
问题是Facebook / Google令牌过期(1-2小时后)。然后我无法刷新我的联合身份令牌,我无法与AWS资源交谈。
如何使用Javascript直接从Web App刷新Google令牌?
Google建议 NOT 在Web应用程序中使用和存储刷新令牌,但将访问令牌(或ID令牌)发送到后端,后端在刷新令牌上进行交换。据此,我是否设置了额外的Lambda函数(用于交换访问令牌以刷新Google令牌)和DynamoDB中的表(我存储刷新令牌)?
...或...
我可以强制接收刷新令牌到Web应用程序并存储在本地存储中吗?
答案 0 :(得分:0)
将刷新令牌存储在本地存储中并不是一个好主意,因为用户可以在开发人员工具中查看本地存储,也可以在本地运行Javascript函数,从您的站点/ webapp上的本地存储中获取数据。
您可以为此设置lambda函数,并在HttpOnly
cookie中存储刷新令牌。您可以从lambda函数设置响应头(nodejs示例):
response.setHeader('Set-Cookie', 'refresh_token="your_refresh_token"; HttpOnly');
此cookie将在客户端向lambda发出的每个请求中发送。
HttpOnly
会向您保证无法通过javascript访问此Cookie。