如何使用AWS Cognito在浏览器中验证用户?

时间:2018-05-26 11:30:00

标签: javascript amazon-web-services browser amazon-cognito

我需要使用带有用户名/密码的AWS Cognito,而不是FB / google IdProviders,在浏览器(非移动应用)中对用户进行身份验证。

有很多文档,但它们似乎是不完整的,不符合要求或不适合彼此的单独块:(

我创建了Cognito用户池,然后创建了标识池并将userPool绑定到了idPool,然后我就卡住了。不知道使用哪个库以及如何使用它。 我找到的最近的是:

  • https://aws.amazon.com/sdk-for-browser/但我的经验不足以将他们的FB样本转换为不使用FB
  • https://github.com/aws/aws-amplify但是使用这个lib我必须从一开始就研究React / Angular(我不是前端开发人员,对不起)我不知道如何转换他们的基于npm的样本到前端javascript(npm是NodeJS的后端,不是吗?)。

我需要的只是带有用户名/密码的简单html表单,将请求发送给Cognito以及在下一页加载时检查密码是否正确的方法。如果重要,我将使用AWS Lambda作为后端来处理未来的任务。

我该怎么办?我的案例有教程/文档吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将AWS Cognito UserPools托管用户界面用于您的用例。最简单的身份验证形式是使用隐式授权。

For more information about setting up Hosted UI refer Add an App to Enable the Hosted Web UI.。这将创建一个UserPool,用户可以在其中自行注册(如果您打算对此进行限制,则需要使用AWS Web Console,Cognito UserPools或使用其SDK添加用户)

步骤如下。

  • 设置Cognito Hosted UI并注册您的应用程序域。这将为您创建登录/注册页面,其中每个页面都有一个唯一的URL。您需要做的是,如果用户未经过身份验证(我们稍后将讨论如何检测它),则需要将用户重定向到“登录”页面。
  • 在登录URL中,您还需要指定应用程序的重定向回URL,以便在成功登录后,Cognito会将用户重定向回在查询字符串中提供令牌的应用程序。
  • 然后,您可以从应用程序内部访问id_token,并使用它来查询后端。
  • 由于id_token是JWT令牌,因此您可以使用Cognito token endpoint上提供的公钥在后端验证它。
  • 要实施JWT验证,您还可以参考Cognito JWT Token validator NodeJS模块。

注意:如果您需要让用户登录更长时间(超过1小时),您可能需要使用代码授予流程,该流程将返回刷新令牌,可用于以编程方式检索新的id_tokens。