Amazon web services 在AWS无服务器配置中,Web应用如何刷新Google登录令牌?

Amazon web services 在AWS无服务器配置中,Web应用如何刷新Google登录令牌?,amazon-web-services,amazon-cognito,google-oauth,serverless-framework,Amazon Web Services,Amazon Cognito,Google Oauth,Serverless Framework,我有一个React+Redux应用程序,它与AWS资源(例如DynamoDB)进行通信。要访问DynamoDB: Web应用程序从Google、Facebook等获得访问令牌/id令牌 Web应用程序将Facebook/Google令牌交换为Cognito联合身份令牌 有了联邦身份的令牌,Web应用可以使用AWS sdk与DynamoDB和其他AWS资源进行对话 问题在于Facebook/Google代币何时过期(1-2小时后)。然后我无法刷新我的联邦身份令牌,也无法与AWS资源对话 如何使用J

我有一个React+Redux应用程序,它与AWS资源(例如DynamoDB)进行通信。要访问DynamoDB:

  • Web应用程序从Google、Facebook等获得访问令牌/id令牌
  • Web应用程序将Facebook/Google令牌交换为Cognito联合身份令牌
  • 有了联邦身份的令牌,Web应用可以使用AWS sdk与DynamoDB和其他AWS资源进行对话
  • 问题在于Facebook/Google代币何时过期(1-2小时后)。然后我无法刷新我的联邦身份令牌,也无法与AWS资源对话

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

    Google建议不要在Web应用程序中使用和存储刷新令牌,而是将访问令牌(或id令牌)发送到后端,后端通过刷新令牌进行交换。根据这一点,我是否在DynamoDB(我存储刷新令牌的地方)中设置了额外的Lambda函数(与Google交换访问令牌以刷新令牌)和表

    …或…


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

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

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

    此cookie将在您的客户每次请求时发送给lambda

    HttpOnly
    将确保您无法从javascript访问此cookie

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