是否可以从 vscode 扩展中对 OAuth 2.0 API 进行身份验证

Is it possible to Auth to an OAuth 2.0 API from inside a vscode extension

我的团队编写了一个监控系统,我们最近将监控的定义迁移到了 git 存储库中。这些定义由一些 json 和 powershell 文件组成。 VSCode 是编辑和处理 git 的理想场景。问题是在开发监控时,能够针对测试环境执行它是很好的。以前所有编辑都是通过 Web 界面完成的,我们允许通过 API 针对测试机器临时执行 powershell,该 API 使用 AzureAD 和 OAuth2.0 进行保护。

VS 代码扩展无法访问完整的电子 api 并且您无法创建 BrowserWindow 来处理通常的 OAuth 重定向流程。有没有办法解决这个限制并允许用户授权我们的 api 以便我们可以调用它?

任何想法或可能的解决方法都会很棒。

您可以做的一件事是通过客户端凭据身份验证方法使用服务器到服务器。 There is node npm library here。 您需要先通过 Azure 门户将您的 VS 代码扩展注册到 Azure AD。 此方法的缺点是传递给 Web API 的凭据将不是用户的凭据,而是相同的扩展特定凭据。但是如果你不需要 VS 代码用户的身份就可以了。

为无法打开 Web 浏览器进行身份验证的应用程序获取用户令牌的受支持方法是 "OAuth Device Flow"。这是一篇关于如何使用 AAD 实现它的博客 link。

https://joonasw.net/view/device-code-flow

您需要在您的扩展中托管一个本地主机网络服务器,当您进行身份验证时,然后传递 localhost:port 作为 oauth 登录流程的重定向 URI。