高级摘要:
Azure身份验证客户端库(.NET、Java、JavaScript和Python)为VS Code提供了一个支持单点登录的类。在当前状态下,凭据类型在这些语言中不再起作用。VisualStudioCodeCredential
需要一种机制来从VS Code获取Entra访问令牌,如果用户使用他们的凭据登录。
上下文和背景:
今天,Azure身份验证库通过调用返回访问令牌的CLI或侧车CLI(如Azure CLI、Azure PowerShell、Azure Developer CLI和Visual Studio)来获取开发者工具中的凭据。VS Code目前没有公开这样的机制。
开发者工具的北极星是采用OneAuth-MSAL作为其1P Entra authN的底层实现。集成需要对OneAuth-MSAL进行本地依赖。对于开发工具来说,这是可以管理的,但对于Azure身份验证库来说,尤其是对于像Go这样的语言,这是一个巨大的用户体验挑战。无法合理地包含此本地依赖的库需要依赖开发工具来暴露一些机制来从当前登录的帐户获取令牌。
/cc: @isidorn@christothes@chlowell
3条答案
按热度按时间yhived7q1#
正如我向Chris提到的,如果你绝对想让
VisualStudioCodeCredential
回来,你可以:1.编写一个VS Code扩展,获取访问令牌并将其保存在磁盘上的某个地方
2.从Azure SDK侧读取它
在使用VS Code打开的情况下,你可以继续“刷新”令牌。
如果VS Code没有打开且令牌已过期,触发打开VS Code,这将激活此扩展并执行上述操作。
你可以使用现有的API来完成所有这些操作。
此外,Azure帐户(间接地)是此功能的提供者,因此某些Azure扩展可以继续成为此功能的提供者,而不是VS Code直接提供。
我更希望你这样做,这样我们就不会在VS Code中留下后门CLI。我们不是其他进程的身份验证提供者。我们只对VS Code扩展提供身份验证服务。
oo7oh9g92#
@TylerLeonhardt ,我感谢你的建议,但这两项提议的解决方案都会导致开发者体验不佳。我相信我们可以做得更好。Azure SDK团队并不从事创建和拥有VS Code扩展的工作。此外,
VisualStudioCodeCredential
必须能够在VS Code未运行时获取访问令牌。请注意,对于其他主要的开发工具,不需要扩展/插件。它们各自都带有令牌检索机制,这种模式已经非常有效。有没有官方的安全审查支持这种方法,解释为什么VS Code被禁止使用这些其他工具中的方法?你还能想到其他的潜在解决方案吗?
如果没有解决方案,VS Code将继续提供比其他开发工具(如Visual Studio、Azure PowerShell、Azure CLI、Azure Developer CLI等)更差的调试和运行体验(充满了登录提示),这个功能将填补这一空白,提高VS Code中的Azure开发者体验,从而帮助满足我们共同的客户基础。
iugsix8n3#
嘿,@TylerLeonhardt ,非常感谢你帮助我们调查这个问题!
为了澄清,我们并不是要提供一个确切的解决方案,而是希望参与并帮助大家集思广益,探讨一个潜在的解决方案,以帮助VSCode用户避免一次又一次地重新登录;我们的首选显然是在VSCode关闭后也能使这个功能正常工作,但我们理解如果这不可行的话,主要场景是在VSCode运行时获取令牌,同时开发者正在运行/调试他们的应用程序代码。