Cognito OAuth2 使用桌面应用程序访问代码处理

2024-02-17

我有一个命令行应用程序,我想使用带有访问代码流和托管登录 UI 的 OAuth2 对 AWS Cognito 进行身份验证。对于类似的情况,Google Cloud 文档明确指出推荐 https://developers.google.com/identity/protocols/oauth2/native-app using http://localhost:N重定向URI,以便应用程序可以在身份验证后处理访问代码:

此授权流程类似于用于 Web 服务器应用程序的授权流程。主要区别在于,安装的应用程序必须打开系统浏览器并提供本地重定向 URI 来处理来自 Google 授权服务器的响应。

但是,对于 Cognito,本地主机 URI 仅允许/建议用于测试目的:

一种替代解决方案是使用“浏览器外”URIurn:ietf:wg:oauth:2.0:oob在浏览器中显示访问代码并让用户将其复制粘贴到应用程序中,但 Cognito 似乎不支持它。

目前,我倾向于运行一个自定义的 OAuth2 回调处理程序,该处理程序只会告诉用户复制粘贴访问代码,但我认为从 Cognito 方面来看它并不真正友好。

那么,问题是:

  1. 使用 Cognito 对桌面/命令行应用程序进行身份验证并最大限度地减少用户干扰的推荐方法是什么?
  2. 如果我忽略 Cognito 关于本地主机重定向 URI 的建议,会出现什么问题?

环回URI

在桌面应用程序中,您可以使用本地主机 HTTP URL 来接收授权响应,这是一种有效的技术。

Cognito 警告是关于使用 localhost URL 进行 Web 应用程序响应,这当然只适合开发人员 PC。 使用环回桌面应用程序时,您可以忽略该警告。

超出浏览器 URI

几年前曾使用此方法从 Web 视图读取授权响应,现在不再推荐使用此方法。本机应用程序的 OAuth https://www.rfc-editor.org/rfc/rfc8252.

私有URI方案

第二个有效的方法是我更喜欢的选项,因为它感觉更加集成。它涉及通过以下形式的 URL 接收授权响应,并向操作系统注册该方案以指向您的应用程序:

  • com.mycompany.mydesktopapp:/callback

矿山资源

如果有帮助的话,我有一些使用 Cognito 的桌面示例/博客文章。您可以在 PC 上运行示例,看看您更喜欢哪一个:

  • 环回URI https://authguidance.com/2018/01/11/desktop-apps-overview/
  • 私有URI方案 https://authguidance.com/2018/01/26/final-desktop-sample-overview/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cognito OAuth2 使用桌面应用程序访问代码处理 的相关文章

随机推荐

  • 使用 ftrace 和 kprobes 捕获用户空间程序集(通过使用虚拟地址转换)?

    对于这篇较长的帖子表示歉意 我无法以较短的方式表述它 另外 也许这更适合 Unix Linux Stack Exchange 但我会首先在这里尝试 因为有一个ftrace tag 无论如何 我想观察用户程序的机器指令在完整的上下文中执行fu
  • 方法“[]”在 null 上调用。接收者:空

    为了隔离问题 我创建了一个新代码 一个新程序和一台新机器 相同的结果 它只是不想打印 quotes 之后且具有 anythingPrice 的任何值 我再次可以给您一个临时密钥 您可以完全运行代码 在你身边 请告诉我 import dart
  • AS3 中 onReleaseOutside 最简单的实现?

    我是 ActionScript 2 的长期用户 现在开始使用 ActionScript 3 我缺少的一件事是复制 AS2 MovieClip onReleaseOutside 功能的简单方法 几乎总是有必要实现这个事件 否则你会得到一些有趣
  • Http 请求仅在发布 Android APK 时失败

    我正在努力让我的应用程序在 Android APK 版本上运行 唯一失败的情况是生成和签名 apk 所有的http请求都不起作用 服务器在SSL下运行 我已经尝试过的所有场景 ionic serve gt 工作正常 ionic cordov
  • Gstreamer - Android 上的硬件加速视频解码

    我在 Android 手机上通过 RTP UDP 接收视频 但我发现 CPU 使用率非常高 几乎 100 的一个核心都用于解码视频 在高端设备上 视频播放几乎流畅 但在中低端设备上 我几乎每秒无法获得 1 帧 这是一个 H 264 视频流
  • WebApi 中的 Windows 任务计划程序或 TaskService 函数

    我想在 ASP NET Web API 中创建一些函数 这些函数应该每天在特定时间执行并执行特定任务 例如更新状态 记录 生成电子邮件 短信 我应该在代码中创建一个 TaskService using System using Micros
  • 为什么我的 unique_ptr 认为有一个空函数指针删除器? [复制]

    这个问题在这里已经有答案了 我正在尝试使用 C 学习 SDL 我创建了一个window h标头和一个window cpp用于存储 Window 类的源文件 在window h它看起来像这样 Class Window public Windo
  • 如何在 MongoDB 中对 $filter 结果进行 $slice ?

    我有一个具有以下格式的集合 id 123 items status inactive created ISODate 2016 03 16T10 39 28 321Z status active created ISODate 2016 0
  • 将 SVG 和 .JPG 合并为一张图像?

    我有一个在地图应用程序中使用 SVG VML 通过 Raphael JS 设置的网站 其中 SVG 用于在背景地图图像上显示图形 这在屏幕上非常有效 并且可以打印带有叠加层的硬拷贝地图 然而 当用户想要将带有 SVG 叠加层的地图图像保存到
  • 如何使用 ELKI 中的索引结构?

    这些是报价形式http elki dbs ifi lmu de http elki dbs ifi lmu de 本质上 我们将抽象距离查询绑定到数据库 然后对该距离进行最近邻搜索 此时 ELKI 将自动选择最合适的 kNN 查询类 如果我
  • 使用 VB.NET 连接到 socket.io

    我有一个在 Heroku 上运行的应用程序 它使用套接字 io http socket io 与客户沟通 到目前为止 所有客户端都是 HTML JS 所以效果很好 现在我想用 Visual Basic 编写一个客户端 但我找不到任何其他人编
  • 查看 Chrome 控制台是否打开

    我正在使用这个小脚本来查明 Firebug 是否打开 if window console window console firebug is open 而且效果很好 现在我搜索了半个小时 想找到一种方法来检测Google Chrome内置的
  • 装饰器运行错误:“UnboundLocalError:赋值前引用的局部变量‘count’”

    我在两个不同的装饰器中创建了两个变量 一个装饰器工作正常 但另一个显示错误 def running average func data total 0 count 0 def wrapper args kwargs print data v
  • 理解扩展 ElementAt(index)

    考虑这段代码 int size 100 1000 1000 var emu Enumerable Range 0 size var arr Enumerable Range 0 size ToArray 当我调用 emu ElementAt
  • Angular 2:设置和删除自定义管道?

    我创建了三个自定义管道来从服务器订购数据 ASC DESC 和默认 它们工作得很好 我希望这三个管道是否处于活动状态 具体取决于用户的交互 问题是 例如 是否可以使用变量更改自定义管道 这是我的代码
  • 如何在cpp宏中生成换行符?

    如何编写扩展以包含换行符的 cpp 宏 我正在开发一个大型项目 其中涉及大量预处理器宏函数来合成无法被模板替换的任何代码 相信我 我熟悉各种模板技巧 但是只要没有可以直接创建代码的标准化 类型安全的元编程语言 我们就必须坚持使用旧的预处理器
  • '4.5:语法错误:算术运算符无效(错误标记为“.5”)' - 但代码似乎仍然有效。为什么? [复制]

    这个问题在这里已经有答案了 当我尝试使用运算符 以及数字 4 5 和 2 时 我的计算器会生成标题中提到的错误 这 就像错误状态一样 很可能是由于 4 5 中小数点后面的内容造成的 但我不知道如何解决这个问题 也不知道为什么脚本实际上能够在
  • VS2015监视窗口不接受空条件语法

    请注意 它既不能在立即窗口中工作 也不能在设置条件断点时工作 谁能解释我做错了什么 EDIT 1 使用旧版 C 和 VB 表达式计算器未选中 然而 使用托管兼容模式已检查 但我记得打开它是为了解决 VS 2015 调试器中的错误 我需要更多
  • 使用 Python Gekko 的全局最小值与局部最小值解决方案

    一个简单的优化示例有 2 个局部最小值 0 0 8 有目标的936 0 and 7 0 0 有目标的951 0 在 Python Gekko 中使用本地优化器的技术有哪些 APOPT BPOPT IPOPT 寻找全局解决方案 from ge
  • Cognito OAuth2 使用桌面应用程序访问代码处理

    我有一个命令行应用程序 我想使用带有访问代码流和托管登录 UI 的 OAuth2 对 AWS Cognito 进行身份验证 对于类似的情况 Google Cloud 文档明确指出推荐 https developers google com