我之前在一个项目中使用过ADAL.js,该项目仅支持工作账户,并且成功获取了idtoken和用于API的accesstoken(ResourceURI: "https://myresource.com"). 一切正常。现在,我正在尝试在另一个项目中使用MSAL.js,因为我需要支持工作账户(aad auth)和个人“Microsoft账户”(MSA)。现在我遇到了问题,想要像在ADAL项目中那样做。AAD V2中似乎已经消失了“资源”的概念。那么,在获取访问目标API的访问令牌时如何指定资源URL呢?这样,生成的访问令牌将在AUD声明中包含ResourceURI(这将由我调用的API强制执行)。如果我强制添加Resource查询字符串参数,如下所示:
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: 提供的输入参数“scope”的值无效。范围 https://myresource.com openid profile 无效。范围格式无效。范围必须是有效的 URI 格式<https://example/scope>或有效的 Guid <guid/scope>。
因此:在使用 MSAL.js 通过 v2 终结点进行工作时,如何指定资源 URI 以获取访问令牌?很抱歉,在这种情况下,(通常很好的)MSDN 文章完全没有用处...