获取 Azure AD V2 端点的访问令牌时如何指定资源 URI?

How to specify Resource URI when acquiring access token for Azure AD V2 endpoint?

我在之前的项目中使用了 ADAL.js,该项目仅支持工作帐户,并且能够成功获取 idtokens,然后访问 API(ResourceURI:“https://myresource.com”) .工作正常。

现在,我正在尝试将 MSAL.js 用于另一个项目,因为我需要同时支持工作帐户 (aad auth) 个人 "Microsoft Accounts" (海事局)。我 运行 现在遇到了问题,试图做与我的 ADAL 项目中相同的事情。

"Resource" 的概念似乎已从 AAD V2 中消失。那么在获取目标 API 的访问令牌时如何指定资源 url 呢?因此生成的 accesstoken 包含 AUD 声明中的 ResourceURI(这将由我调用的 API 强制执行)。

如果我强制添加 Resource querystring 参数,则:

msalapp.acquireTokenSilent([], null, null, "resource=https%3A%2F%2Fmyresource.com")

我收到以下错误:

AADSTS901002: The 'resource' request parameter is not supported.

文档说要改用 SCOPE。但是使用:

msalapp.acquireTokenSilent(['https://myresource.com'])

结果:

AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope https://myresource.com openid profile is not valid. The scope format is invalid. Scope must be in a valid URI form <https://example/scope> or a valid Guid <guid/scope>..

因此:在通过 MSAL.js 使用 v2 端点时获取访问令牌时如何指定资源 URI? 抱歉(通常非常好)MSDN在这种情况下,文章根本没有用...

在 Azure AD v2.0 中,您需要使用作用域,而不是资源。

如果您有资源,并且想获得所有权限的令牌,您可以使用: https://myresource.com/.default.

您也可以更细粒度:更多信息可从 https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/Adal-to-Msal#scopes-for-a-v10-application 获得(这是在 C# 中,但翻译很简单)