如何在没有 Amplify 的情况下使用 Amazon Cognito
Posted
技术标签:
【中文标题】如何在没有 Amplify 的情况下使用 Amazon Cognito【英文标题】:How to use Amazon Cognito without Amplify 【发布时间】:2021-06-16 11:02:14 【问题描述】:我刚刚开始研究 Cognito。 AWS 设置相当简单明了。
我们有各种各样的应用程序、网络应用程序和服务,我们希望它们能够使用 Cognito 服务。我有使用 Auth0 进行类似设置的经验,但因为我们一直在利用许多 Amazon Web Services,所以使用 Cognito 也很有意义。
无论在哪里,每个指南最终都会引用 Amplify 客户端库和 cli。我们有现有的应用程序和服务,并且真的不想更改工具或导入任何不必要的东西来增加臃肿和复杂性。有没有办法在没有 Amplify 库的情况下使用 Cognito 服务?是否有用于与 Cognito 服务、身份验证和授权流程交互的轻量级 Cognito 客户端库?
【问题讨论】:
您是否设法在没有 Amplify 的情况下使用 Cognito?我也想只使用 Cognito 而没有其他服务。目前我使用 Firebase 身份验证 【参考方案1】:2021 年 12 月 3 日更新
在 re:Invent 2021 之后,“Amplify Admin UI”重命名为“Amplify Studio”。现在拥有额外的权力:
自动将 Figma 中的设计转换为人类可读的 React UI 组件代码https://aws.amazon.com/blogs/mobile/aws-amplify-studio-figma-to-fullstack-react-app-with-minimal-programming/
================
原答案
首先,我想澄清“放大”是多个事物的总称。我们有:
-
放大库 (UI/JS)
放大 CLI(以创建云原生应用程序)
Amplify 控制台(用于全栈 Web 应用程序的 ci/cd 和托管)
放大管理 UI(用于创建和配置全栈 Web 应用程序的 UI)
您可以查看主页以获得更多说明 - https://docs.amplify.aws/
是否有一个仅用于 Cognito 的轻量级客户端库,用于与 Cognito 服务、身份验证和授权流程交互?
在幕后,Amplify 使用 amazon-cognito-identity-js 库与 Amazon Cognito 进行交互。您可以通过npm install amazon-cognito-identity-js
直接安装。
源代码已移至Amplify Libraries (e.g. amplify-js) 存储库。再次,它是第一类“Amplify Libraries”下“Amplify”保护伞的一部分。
有没有办法在没有 Amplify 库的情况下使用 Cognito 服务?
您可以执行的另一种方法是将 Amazon Cognito 用作 OAuth 服务器。当您创建 Amazon Cognito Hosted UI Domain 时,它会为您提供符合 OAuth 2.0 的授权服务器。
您可以为注册/登录端点创建自己的 API/后端,并与 Amazon Cognito OAuth 服务器交换令牌/凭据,而无需使用 aws-sdk
或任何第三方依赖库。
我写了一个演练示例,如何配置您的用户池,您需要使用 Node.js 与之通信的端点,您可以在这里找到它:https://github.com/oieduardorabelo/node-amazon-cognito-oauth
您可以对任何其他语言遵循相同的想法。
【讨论】:
【参考方案2】:几年前我写了一篇文章来解释如何做到这一点。
这篇文章谈到了 Amplify,但正如另一个回复中提到的那样,这更像是一个概括性术语,在文章中我们主要使用 Amplify 项目提供的 UI 组件。
你可以在这里找到它:https://medium.com/@mim3dot/aws-amplify-cognito-part-2-ui-components-935876fabad3
【讨论】:
以上是关于如何在没有 Amplify 的情况下使用 Amazon Cognito的主要内容,如果未能解决你的问题,请参考以下文章
AWS Amplify 在没有错误日志的情况下无法构建和编译
如何在没有授权人的情况下通过 API Gateway 使 AWS Cognito 用户数据可供 Lambda 使用?