我对 Azure/OAuth2 很陌生,如果这是一个简单的问题,我深表歉意。不过,我的头在旋转,我会很感激一些指点。
我正在开发一个用于高性能计算集群的命令行实用程序。此实用程序需要访问使用 Azure 的 OAuth2 实施保护的 REST API。
我正在努力弄清楚我的客户端实用程序应该如何获取身份验证代码。我的预期流程看起来像这样......
- 用户在随机 HPC 节点上获取终端并在命令行上调用客户端
- 客户发现它需要一个新的访问代码
- 客户端生成一个URL供用户访问并打印到终端
- 客户端启动服务器以侦听重定向 URL 处的代码
- 用户在其本地机器(不是客户端运行的机器)上打开浏览器并提供凭据
- 客户端通过重定向接收代码,
- 客户端在访问 API 之前关闭服务器并继续 OAuth2 流程的其余部分。
我在第 5 步和第 6 步之间跌倒了。提供凭据后,我在浏览器中看到“没有为应用程序注册回复地址”。我认为 Azure 希望我在应用注册中指定一个回复地址,以便它可以验证客户端生成的 URL 中的回复地址。问题是,我不能给一个可行的!这就是为什么...
- 仅终端客户端:表示客户端计算机上没有 GUI 浏览器。IE 不能使用 'localhost' 作为回复地址
- 数千个潜在的客户端主机:我的客户端可以在我们计算集群的数千个节点中的任何一个上调用。这使得在应用的 Azure 注册中列出所有潜在的重定向 URI 是不可行的。IE 我不能让用户同意在另一台机器上使用浏览器,因为这样我就必须为集群中的每个主机插入并维护一个回复地址!
我尝试使用 Azure 实现的目标是否可行?我觉得我的流程要么错误,要么我的用例不受支持。我在 OAuth2 规范中阅读了一些关于“设备流程”的信息,看起来它可能很有用。但是,我没有看到 Azure 支持这一点的任何迹象。
我的下一步是通过具有已知静态 URI 的代理路由所有代码回复。不过,这感觉比我应该做的工作要多,所以想先通过专家;)
想法赞赏!
谢谢,
标记。