0

所以我使用 cognito 用户池和谷歌作为身份提供者。我配置了所有内容,并将数据发送到谷歌,谷歌重定向回亚马逊身份验证端点,然后使用 URL 中的以下参数重定向回我的应用程序:

AccessToken
ExpiresIn
IdToken
TokenType

现在,我不知道如何使用这些来实际创建一个 Cognito “会话”,该“会话”进入 javascript api 工作流程并变得自动(发送、接收和更新令牌)

我如何实现这一目标?

4

1 回答 1

0

使用 IDToken 验证您的 API

身份验证后,您可以在浏览器中缓存 IDToken,并在登录用户从您的 Web 或移动应用程序请求 API 调用时使用它。然后,您可以在 API 端点为每个请求验证令牌。

验证 IDToken

有关使用令牌并在 API 端点验证它的更多信息,请参阅AWS 文档中的 Using Tokens with User Pools。AWS 引入了一个名为aws-amplify的新库,它简化了一些实现。如果您将 AWS API Gateway 用于您的 API,则可以使用自定义授权方 Lambda 函数进行验证。

存储 IDToken 和安全性

此外,IDToken 是无状态令牌,这意味着它没有与 AWS Cognito 相关的会话。这意味着您无法在发布后撤销它。因此,保持其到期时间短很重要。

要允许您的身份验证 API 在过期之前发出新的 IDToken,您可能需要将 Refresh Token 存储在后端并使用它在 IDToken 过期之前发出新的令牌以实现滑动窗口。

注意:将 IDToken 存储在浏览器中,您可以决定使用多个可用的存储选项(例如 Cookies、LocalStorage)。但是,我不打算对安全影响发表评论,因为这本身就是一个长期的讨论,其中仍有一些自以为是的领域。当前可用的标准方法是设置服务器端 Cookie 并实现 CSRF。除非您仅使用 IDToken 来启动身份验证并使用会话代替重复请求,否则实施起来将具有挑战性。

于 2018-03-31T02:08:24.137 回答