You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无后端及AD租户时,用MSAL从浏览器原生JS连接Azure DevOps?

问题

使用Personal Access Token(PAT)并将其放入请求头,可在NodeJS、PowerShell和curl中访问所有Azure DevOps REST API。我希望在无后端代码的浏览器原生JS中实现相同功能,但不想让用户输入PAT并存入本地存储,而是希望通过MSAL引导用户登录获取令牌。不过MSAL要求创建Azure AD租户及客户端ID,而我不想使用Azure云,仅需让用户访问公司现有Azure DevOps服务器。目前已可通过用户自行创建的PAT访问资源,想跳过该步骤直接登录获令牌,是否有遗漏?为何需要租户?

回答

为什么必须要有租户?

MSAL是基于Azure AD(或Azure AD B2C)的身份认证库,核心逻辑就是靠Azure AD的OAuth2/OIDC流程发放令牌。不管是云端Azure DevOps还是本地部署的Azure DevOps Server(原TFS),其用户身份体系要么直接绑定Azure AD,要么是和本地Active Directory(AD)同步后的Azure AD租户——你们公司现有Azure DevOps服务器的用户身份肯定和某个AD体系挂钩,MSAL要对接这个身份体系,就必须通过对应的Azure AD租户完成身份校验和令牌发放。

你可能遗漏的关键点

  • 本地Azure DevOps Server的专属身份方案:如果你们用的是本地部署的Azure DevOps Server,可以试试集成Windows身份认证(IWA)在浏览器直接登录,不用MSAL也不用PAT。但这种方式仅限企业内网环境,且依赖浏览器支持NTLM/Kerberos认证。
  • “不用Azure云”的误区:你以为的“不想用Azure云”其实不成立——哪怕是本地Azure DevOps Server,要通过MSAL做OAuth认证,也得把本地AD同步到Azure AD租户(这是微软官方标配流程),因为MSAL本身没有对接纯本地AD的能力,只能和Azure AD交互。
  • 无PAT方案的局限性:如果既不想用PAT又不想碰Azure AD,只能依赖浏览器原生身份认证机制(比如IWA),但这种方式做不到MSAL那样的精细化权限控制,且只能在特定内网环境生效。

总结

如果一定要用MSAL实现无PAT的浏览器端登录,绕不开Azure AD租户——因为MSAL的身份流转必须通过Azure AD完成。要是实在不想碰Azure云,只能退而求次用内网环境下的集成Windows身份认证,或者接受用户手动输入PAT的方案。


内容的提问来源于stack exchange,提问作者Art Ghangsta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:01:13