Web应用程序如何在AWS无服务器配置中刷新Google登录令牌?

问题描述 投票:2回答:1

我有一个React + Redux应用程序,它与AWS Resources(例如DynamoDB)进行对话。要访问DynamoDB:

  1. Web App从Google,Facebook等获取access_token / id_token。
  2. Web App将Facebook / Google令牌交换为Cognito Federated Identities令牌。
  3. 使用Federated Identities的令牌,Web App可以使用aws-sdk与DynamoDB和其他AWS资源进行通信。

问题是Facebook / Google令牌过期(1-2小时后)。然后我无法刷新我的联合身份令牌,我无法与AWS资源交谈。

如何使用Javascript直接从Web App刷新Google令牌?

Google建议不要在Web应用程序中使用和存储刷新令牌,而是将访问令牌(或ID令牌)发送到后端,后端在刷新令牌上进行交换。据此,我是否设置了额外的Lambda函数(用于交换访问令牌以刷新Google令牌)和DynamoDB中的表(我存储刷新令牌)?

...要么...

我可以强制接收刷新令牌到Web应用程序并存储在本地存储中吗?

amazon-web-services amazon-cognito google-oauth2 serverless-framework
1个回答
0
投票

将刷新令牌存储在本地存储中并不是一个好主意,因为用户可以在开发人员工具中查看本地存储,也可以在本地运行Javascript功能,从您的站点/ webapp上的本地存储中获取数据。

您可以为此目的设置lambda函数,并在HttpOnly cookie中存储刷新令牌。您可以从lambda函数设置响应头(nodejs示例):

response.setHeader('Set-Cookie', 'refresh_token="your_refresh_token"; HttpOnly');

这个cookie将在客户端发送给lambda的每个请求时发送。

HttpOnly将向您保证,无法通过javascript访问此cookie。

© www.soinside.com 2019 - 2024. All rights reserved.