如何在不使用 Amplify 的情况下使用 Amazon Cognito

2024-03-02

我现在刚刚开始研究 Cognito。 AWS 的设置相当简单、直接。

我们有各种应用程序、网络应用程序和服务,我们希望它们能够使用 Cognito 服务。我有使用 Auth0 进行类似设置的经验,但由于我们一直在利用许多 Amazon Web Services,因此使用 Cognito 也确实很有意义。

无论我看什么,每个指南最终都会引用 Amplify 客户端库和 cli。我们拥有现有的应用程序和服务,并且真的不想更改工具或导入任何不必要的东西来增加臃肿和复杂性。有没有办法在没有 Amplify 库的情况下使用 Cognito 服务?是否有一个轻量级的仅 Cognito 客户端库用于与 Cognito 服务、身份验证和授权流程交互?


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/ https://aws.amazon.com/blogs/mobile/aws-amplify-studio-figma-to-fullstack-react-app-with-minimal-programming/

===============

原答案

首先,我想澄清“放大”是多种事物的总称。我们有:

  1. 放大库 (UI/JS)
  2. 放大 CLI(以创建云原生应用程序)
  3. Amplify Console(ci/cd 和全栈 Web 应用程序托管)
  4. 放大管理 UI(用于创建和配置全栈 Web 应用程序的 UI)

您可以查看主页以获取更多说明 -https://docs.amplify.aws/ https://docs.amplify.aws/

是否有一个轻量级的仅 Cognito 客户端库用于与 Cognito 服务、身份验证和授权流程交互?

Amplify 在幕后使用亚马逊-认知-身份-js https://www.npmjs.com/package/amazon-cognito-identity-js与 Amazon Cognito 交互的库。您可以直接通过安装npm install amazon-cognito-identity-js.

源代码已移至放大库(例如 amplify-js) https://github.com/aws-amplify/amplify-js/tree/main/packages/amazon-cognito-identity-js存储库。再次属于第一类“Amplify Libraries”下的“Amplify”保护伞的一部分。

有没有办法在没有 Amplify 库的情况下使用 Cognito 服务?

您可以采用的另一种方法是使用 Amazon Cognito 作为 OAuth 服务器。当您创建一个Amazon Cognito 托管 UI 域 https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-integration.html,它为您提供了一个符合 OAuth 2.0 的授权服务器。

您可以为注册/登录终端节点创建自己的 API/后端,并与 Amazon Cognito OAuth 服务器交换令牌/凭证,而无需使用aws-sdk或任何第三方依赖库。

我写了一个演练示例,介绍如何配置您的用户池、您需要使用 Node.js 进行通信的端点,您可以在这里找到它:https://github.com/oieduardorabelo/node-amazon-cognito-oauth https://github.com/oieduardorabelo/node-amazon-cognito-oauth

您可以对任何其他语言遵循相同的想法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不使用 Amplify 的情况下使用 Amazon Cognito 的相关文章

随机推荐

  • 如何设置gdb的默认选项?

    我每次打开 GDB 时都会设置几个选项 例如 set print thread events off 有没有办法默认设置这些选项 也许类似于 gdb rc 文件 初始化文件为gdb叫做 gdbinit 您可以将所需的选项放入此文件中 它们将
  • 当 div 滚动到视口时淡入

    好的 所以我一直在寻找simple当用户将其滚动到视图中时淡入 div 的方法 但我找不到直接的解决方案 HTML div class container div class topdiv This is a 100 height div
  • C# - 无法在方法内声明委托

    我这里真的是一片空白 我在想why我无法在方法中声明委托类型 但我必须在类级别声明委托类型 namespace delegate learning class Program Works fine public delegate void
  • 静态内存实例中的字符串计数

    据我所知 编译时类似 C 的字符串仅作为一个实例保存在静态内存中 例如我两者都有true在 gcc 4 6 上运行下面的示例 但我想知道它是否总是如此并且可以便携 C 和 C 上的行为都很有趣 include
  • Spark如何执行join+filter?它具有可扩展性吗?

    假设我有两个大型 RDD A 和 B 包含键值对 我想使用密钥连接 A 和 B 但是在匹配的 a b 对中 我只想要一小部分 好 的 所以我进行连接并随后应用过滤器 A join B filter isGoodPair where isGo
  • Laravel 5.1 防止 CSRF 不匹配引发异常 [重复]

    这个问题在这里已经有答案了 我遇到向用户抛出 CSRF 异常的问题 发生这种情况的原因完全是无辜的 例如 如果有人在最 终提交表单时花了太长时间填写表单 则会话已过期并且令牌不匹配 现在显然这是一个错误 但它不需要杀死所有内容并抛出异常 有
  • 优化 Solr 的排序

    我正在使用 Solr 进行实时搜索索引 我的数据集大约有 60M 大文档 我需要按时间排序 而不是按相关性排序 目前 我在查询中使用排序标志按时间排序 这对于特定搜索效果很好 但是当搜索返回大量结果时 Solr 必须获取所有结果文档并在返回
  • RDD 中的分区数量和 Spark 中的性能

    在 Pyspark 中 我可以从列表创建 RDD 并决定有多少个分区 sc SparkContext sc parallelize xrange 0 10 4 我决定对 RDD 进行分区的分区数量如何影响性能 这与我的机器的核心数量有何关系
  • Java - 变量可能未初始化

    好的 所以无论我尝试什么 这个程序都无法工作 它只是一直说可变税可能未初始化 我可以拥有的唯一属性是收入 因此我无法申报高于此代码的税款 我发现如果我这样做的话 代码实际上可以被编译 显然这会导致数据过时 所以它没有用 请帮忙 public
  • 在编译时将文件复制到应用程序文件夹中

    如果我有一些文件想要从我的项目复制到 bin debug 编译时的文件夹 那么看来我必须将它们放入项目的根目录中 将它们放入子文件夹似乎将它们复制到 bin debug 文件夹的结构与它们存储的结构相同 有什么办法可以避免这种情况吗 只是要
  • Xcode 不兼容的指针类型

    语义问题 初始化时不兼容的指针类型NewCustomCell 带有类型的表达式UITableViewCell static NSString cellID customCell NewCustomCell cell tableView de
  • 从 C# 接口继承 XML 注释

    我想知道是否有人知道如何将接口 xml 注释链接到实现 问题是我希望基本评论首先来自我的界面 例子 interface myinterface
  • 我的 RestController 没有触发 @ControllerAdvice 和 @ExceptionHandler

    为了在整个应用程序中进行统一的异常处理 我正在使用使用 Spring 进行 REST 的错误处理 https www baeldung com exception handling for rest with spring解决方案 3 使用
  • MVC3 中的 POCO 类和 ViewModel

    我不是一名经验丰富的 MVC3 开发人员 但我正在努力成为一名经验丰富的 MVC3 开发人员 我熟悉 POCO 类和 ViewModel 因为前者描述了数据库的每个类 后者用于 mvc3 中的强类型视图 对于经验丰富的开发人员来说 我的问题
  • 用于插入、更新、删除后将数据按顺序输入日志表的 PL/SQL 触发器

    我正在解决家庭作业问题 我的触发器遇到了编译问题 并且无法理解如何创建引用序列和另一个表的触发器 并将这些值插入到我创建的日志表中 我读过 在表列条目上使用 SERIAL not null 可能会消除对序列和引用表的需要 http www
  • django:datediff sql 查询?

    我正在尝试在 Django 中执行与以下 SQL 等效的操作 SELECT FROM applicant WHERE date out date in gt 1 AND date out date in lt 6 我可以将其作为 RAW s
  • 将 div 扩展到滚动高度

    我需要扩展一个通过 css 将溢出设置为隐藏的 div 单击 展开 时 div 的高度将扩展到显示整个文本所需的高度 为了实现这一目标 我使用以下代码 expand click function mainDiv animate height
  • Safari/Chrome (Webkit) - 无法隐藏 iframe 垂直滚动条

    我有一个iframe在 www example com 上 指向 support example com 这是外部域的 CNAME 我自动调整 iframe 的高度 以便框架不需要任何滚动条来显示所包含的网页 在 Firefox 和 IE
  • 使用 stdin stdout 和 stderr 启动 exe/进程?

    使用 C 我如何使用 stdin stdout 和 stderr 启动 exe 进程 我知道如何在 NET 中执行此操作 我记得过去使用过 popen 但 popen 似乎允许 stdin 或 stdout 但不能同时使用 也不能全部使用
  • 如何在不使用 Amplify 的情况下使用 Amazon Cognito

    我现在刚刚开始研究 Cognito AWS 的设置相当简单 直接 我们有各种应用程序 网络应用程序和服务 我们希望它们能够使用 Cognito 服务 我有使用 Auth0 进行类似设置的经验 但由于我们一直在利用许多 Amazon Web