如何使用MSAL.js为Azure DevOps获取有效的AAD v2令牌

问题描述 投票:0回答:1

ADAL.js和AAD v1使用委派的user_impersonation范围来访问Azure DevOps。

我使用具有委派权限的相同AAD应用程序ID来使用MSAL.js生成访问令牌。令牌已成功创建,但访问令牌无法访问Azure DevOps。

解码的JWT令牌中唯一有意义的区别是“aud”声明是不同的。

在ADAL / v1中,aud是Azure DevOps的应用程序ID:

"aud": "499b84ac-1321-427f-aa17-267ca6975798"

在MSAL / v1中,aud是Azure DevOps的唯一uri:

"aud": "https://app.vssps.visualstudio.com"

有没有人能够使用带有user_impersonation委派权限的MSAL.js来访问Azure DevOps rest API?如果是这样,有什么东西可以让MSAL工作吗?

是否有可能他们的JWT验证还没有考虑到第二个受众价值?

azure jwt azure-active-directory azure-devops-rest-api msal
1个回答
0
投票

看起来Azure DevOps是一个v1.0应用程序,因此我尝试使用Azure Portal在设置委派权限时建议的错误的v2.0范围:

scopes: ['https://app.vssps.visualstudio.com/user_impersonation']

但是,根据这个doc,范围应该在与v1.0应用程序交谈时使用资源Id作为前缀。以下是Azure DevOps资源ID的工作范围:

scopes: ['499b84ac-1321-427f-aa17-267ca6975798/user_impersonation']

这解决了aud字段的问题,因此我再次获得了499b84ac-1321-427f-aa17-267ca6975798的JWT审计声明。

希望这有助于其他人阻止此问题。

© www.soinside.com 2019 - 2024. All rights reserved.