【问题标题】:Is it possible to Auth to an OAuth 2.0 API from inside a vscode extension是否可以从 vscode 扩展中对 OAuth 2.0 API 进行身份验证
【发布时间】:2016-07-11 23:25:42
【问题描述】:

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

VS Code 扩展无法访问完整的电子 API,并且您无法创建 BrowserWindow 来处理通常的 OAuth 重定向流程。有没有办法解决这个限制并允许用户对我们的 api 进行身份验证,以便我们可以调用它?

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

【问题讨论】:

  • 您找到解决方案了吗?

标签: oauth visual-studio-code vscode-extensions


【解决方案1】:

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

【讨论】:

  • 使用客户端凭据的问题是您需要对凭据保密 - 当您必须发送代码时(例如,在扩展程序中),这几乎是不可能的。设备登录/设备代码流在这里是更好的选择。
【解决方案2】:

为无法打开 Web 浏览器进行身份验证的应用程序获取用户令牌的受支持方法是“OAuth 设备流程”。这是一个关于如何使用 AAD 实现它的博客链接。

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

【讨论】:

  • 你可以打开浏览器访问一个 url,当然。然后呢?您必须将重定向 URI 中的令牌返回到在 VSCode 内运行的扩展中。我们实际上是通过 localhost websocket 和其他一些纯粹的恶作剧来实现的(在我们的扩展程序内部运行一个网络服务器)。这实际上是他们设想的设备流程的场景。这也是 vscode 中的 Azure 扩展用于身份验证的内容。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多