繁体   English   中英

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

[英]Cognito OAuth2 access code handling with a desktop app

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

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

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

Cognito 应用回调

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

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

所以,问题是:

  1. 在用户干扰最小的情况下,使用 Cognito 对桌面/命令行应用程序进行身份验证的推荐方法是什么?
  2. 如果我忽略 Cognito 关于本地主机重定向 URI 的建议,go 会出现什么错误?

环回 URI

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

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

超出浏览器 URI

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

私有 URI 方案

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

  • com.mycompany.mydesktopapp:/回调

我的资源

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM