0

所以这是我的场景,我有一个在 AWS 上使用无服务器架构开发的 Web 应用程序。我使用 S3 来托管我的静态内容,我的所有服务器端代码都在 Lambda 函数中实现并通过 API Gateway 访问。现在我正在尝试使用 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 网关并使用它来验证用户。但我不确定如何。我发现这个页面解释了令牌的步骤,但是代码呢?

4

1 回答 1

0

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

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

于 2018-04-19T03:01:51.900 回答