使用代码对 AWS 上的用户进行身份验证,使用 Cognito 对无服务器 React Web 应用程序进行身份验证



这是我的方案,我在 AWS 上有一个使用无服务器架构开发的 Web 应用程序。我正在使用 S3 来托管我的静态内容,我所有的服务器端代码都是在 Lambda 函数中实现的,并通过 API 网关访问。现在,我正在尝试使用Cognito和用户池来实现身份验证层。

我一直按照此页面上的说明创建了一个用户池。完成此操作后,我可以通过在浏览器的地址栏中输入如下 URL 来测试我的用户池:

https://my_subdomain_under_aws/login?response_type=code&client_id=my_app_client_id&redirect_uri=my_callback_url

重要的部分(对我来说)是response_type=code根据相同的文档也可以response_type=token.在这一点上,我不确定它们有什么区别,我应该如何在它们之间进行选择。

无论如何,打开提到的 URL 将带您进入 AWS 默认登录表单。成功对用户进行身份验证后,浏览器将被重定向到提供的redirect_uri,并带有如下所示的额外参数/?code=12345678-1234-1234-1234-123456789012。在这一点上,我想我应该提取code(在客户端使用 Javascript)并将其传递给 API 网关并使用它来验证用户。但我不确定如何。我发现这个页面解释了令牌的步骤,但是代码呢?

如果要使用代码授予,则需要将代码转发到身份验证 API 后端并从中获取id_token。或者,您可以将刷新令牌安全地存储在后端中,以便您可以使用它在当前令牌过期之前发布新id_tokens。使用此id_token您可以调用您的 API,您可以在 API 网关自定义授权 Lambda 或使用 Cognito 授权方中验证id_token。

但是,植入 Cognito 可以使用 AWS Amplify JS 库进一步简化。AWS 最近引入了此功能,以实施完整的身份验证流程,以最大程度地减少工作量。

相关内容

最新更新