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

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

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

现在,我正在尝试将MSAL.js用于另一个项目,因为我需要支持工作帐户(aad auth)和个人“Microsoft帐户”(MSA)。我现在遇到问题,试图做同样的事情,就像在我的ADAL项目中一样。

“资源”的概念似乎从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-active-directory adal msal adal.js msal.js
1个回答
5
投票

在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#,但翻译很简单)

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