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

11
我之前在一个项目中使用过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 文章完全没有用处...

1个回答

18

酷,谢谢!我刚刚偶然发现了一篇很棒的MSDN文章https://learn.microsoft.com/en-us/azure/active-directory/develop/azure-ad-endpoint-comparison,其中有一个名为“作用域而非资源”的章节!!!详细解释了这个问题。再次向MSDN之神致敬:)。/.default是一个不错的小发现,感谢@Jean-Marc! - Sat Thiru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接