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

时间:2018-11-30 06:06:34

标签: azure-active-directory adal msal adal.js msal.js

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

现在,我正尝试将MSAL.js用于另一个项目,因为在那里我需要同时支持工作帐户(aad auth)和个人“ Microsoft帐户”(MSA)。我现在在尝试做与ADAL项目中相同的事情时遇到了麻烦。

“资源”的概念似乎已从AAD V2中消失。那么,在获取对目标API的访问令牌时如何指定资源网址?因此,生成的访问令牌在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文章根本没有用。这种情况下...

1 个答案:

答案 0 :(得分:6)

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