AWS API Gateway 授权者 google 登录

jef*_*son 7 amazon-web-services google-signin aws-api-gateway

我有一个 API 网关/lambda REST API,可以从 React Web 应用程序访问。我需要使用谷歌作为身份提供者添加身份验证。应用程序还应该让用户保持登录状态。

我了解当用户首次授予对(反应)客户端应用程序的访问权限时,它应该将 ID 令牌发送到我的后端,然后后端应该验证该令牌。

由于我的架构是无服务器的,我假设验证应该在 API 网关授权者函数中完成,然后在成功验证令牌后授予对 API 的访问权限。

我的问题是,如何创建持久会话?我应该将有关用户的任何信息保存到数据库中吗?是否需要在每次 API 调用时验证令牌?

授权者应该检查用户是否已经注册或者是否是新用户?

And*_*son 7

为此,使用 AWS Cognito 是最简单的。将用户池配置为 API 网关的授权方,然后将 Google 配置为该用户池的身份提供商。此链接可能会有所帮助:https://docs.aws.amazon.com/cognito/latest/developerguide/google.html。如果您想使用 Cognito 来登录用户,Cognito 甚至还有托管 UI。

至于您关于持久用户会话的问题,它们通常会持久保存在浏览器的本地存储中、cookie 或某种类似的机制中。您还可以将它们保存在服务器端的数据库中,就像您提到的那样,但这并不是真正用于身份验证的目的。

用户会话将包含访问令牌。访问令牌是短暂的,这意味着您通常只能使用它们一个小时。之后,您必须使用单独的刷新令牌来生成新的访问令牌。为了更加安全,刷新令牌本身将在几天后过期(并且您必须重新登录)。