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

ber*_*eal 2 oauth-2.0 amazon-cognito

我有一个命令行应用程序,我想使用带有访问代码流和托管登录 UI 的 OAuth2 对 AWS Cognito 进行身份验证。对于类似的情况,Google Cloud 文档明确建议使用http://localhost:N重定向 URI,以便应用程序可以在身份验证后处理访问代码:

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

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

Cognito 应用程序回调

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

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

那么,问题是:

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

Gar*_*her 7

环回URI

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

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

超出浏览器 URI

几年前,它被用来从 Web 视图读取授权响应,并且在OAuth for Native Apps中不再推荐。

私有 URI 方案

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

  • com.mycompany.mydesktopapp:/callback

矿山资源

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