【问题标题】:Cognito OAuth2 access code handling with a desktop app使用桌面应用程序处理 Cognito OAuth2 访问代码
【发布时间】:2020-08-31 00:42:49
【问题描述】:

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

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

但是,使用 Cognito localhost URI 仅允许/推荐用于测试目的:

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

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

那么问题来了:

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

【问题讨论】:

    标签: oauth-2.0 amazon-cognito


    【解决方案1】:

    循环 URI

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

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

    超出浏览器 URI

    这在几年前用于从 Web 视图中读取授权响应,在 OAuth for Native Apps 中不再推荐。

    私有 URI 方案

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

    • com.mycompany.mydesktopapp:/callback

    我的资源

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

    【讨论】:

    • 谢谢,如果我弄清楚如何使它跨平台,私有方案看起来是一个不错的解决方案。至于环回 URI,当我尝试在应用程序客户端设置中设置它们时,我收到警告,我用屏幕截图更新了问题。我是在错误的地方做的吗?
    • 看起来不错 - 环回 URL 必须使用 localhost - 因为它们就是这样。您可以忽略桌面应用程序的 Cognito 警告。我的设置是等效的,但涉及注册多个端口以防另一个应用程序使用一个端口 - 请参阅step 6 of this post
    猜你喜欢
    • 2020-08-20
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2019-07-06
    相关资源
    最近更新 更多