我有一个命令行应用程序,我想使用带有访问代码流和托管登录 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 方面来看它并不真正友好。
那么,问题是:
- 使用 Cognito 对桌面/命令行应用程序进行身份验证并最大限度地减少用户干扰的推荐方法是什么?
- 如果我忽略 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(使用前将#替换为@)