azure-active-directory - 获取 Azure AD V2 端点的访问 token 时如何指定资源 URI?

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

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

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

“资源”的概念似乎从 AAD V2 中消失了 .那么在获取目标 API 的访问 token 时如何指定 Resource url 呢?以便生成的访问 token 在 AUD 声明中包含 ResourceURI(将由我正在调用的 API 强制执行)。

如果我强制添加资源查询字符串参数,则:
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 端点时,如何在获取访问 token 时指定资源 URI? 抱歉,(通常很好)MSDN 文章在这种情况下根本没有用...

最佳答案

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

如果您有一个资源,并希望获得所有权限的 token ,您可以使用:https://myresource.com/.default .

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

关于azure-active-directory - 获取 Azure AD V2 端点的访问 token 时如何指定资源 URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53552146/

相关文章:

android - 从 Play 商店下载应用程序时 Microsoft MSAL 集成不起作用

azure-ad-b2c - 使用 msal 连接到 Azure B2C - 状态参数

azure-active-directory - 天蓝色 : Service Principal ID vs Application ID

azure - 如何通过graph api从azure ad中的域或子域获取/搜索用户

azure-active-directory - 由于在缓存中未找到 token ,无法以静默方式获取 token 。调用AcquireToken方法

azure - 从 Angular AD 客户端获取应用程序的有效承载 token

angular - 运行 Angular e2e 测试时如何禁用或绕过 MSAL 身份验证?

azure - 如何使用 MS graph API 获取 azure ad b2c 用户的身份验证方法或 MFA 电话号码

azure - Microsoft Graph 客户端错误 : Authentication challenge is required

java - Microsoft Graph API 访问 token 验证失败 (java)