【发布时间】:2019-06-13 15:52:49
【问题描述】:
我在自己的 Azure AD 租户中有一个 DotNet Core WebAPI。此 WebAPI 通过 AzureAD V2 (!) BearerToken 身份验证进行保护。此 API 由通过 OIDC (AzureAD v2) 验证的 Angular SPA 调用,使用 @azure/msal-angular 遵循 https://docs.microsoft.com/en-us/graph/tutorials/angular 的教程。我自己租户的用户一切正常。但是当使用另一个租户的用户登录时,我收到以下错误:
"AADSTS650052: The app needs access to a service
(\\\"https://mytenant.de/AngularDemoApi2\\\") that your organization
\\\"myorganization.de\\\" has not subscribed to or enabled. Contact your
IT Admin to review the configuration of your service
subscriptions.\r\nTrace ID: 9597578e-7e48-49b2-85be--b5a1ee14300\r\n
Correlation ID: 30d4caf2-e3ca-4d7d-84b5-564d428e4e69\r\n
Timestamp: 2019-06-13 15:40:46Z|invalid_client"
我已尝试遵循一些示例来使 WebApplication 和 WebAPI 多租户,但所有示例似乎都已过时和/或与 Azure AD V2 无关。 WebApplication 和 WebAPI 已设置
"signInAudience": "AzureADandPersonalMicrosoftAccount"
在清单中。 WebAPI 的 App Uri 形式为
https://mytenant.de/AngularDemoApi2"
我想我需要以某种方式授予其他租户的用户访问我租户中的 WebAPI 的权限,但我不知道如何。
编辑:当我选择直接从 SPA 的应用注册中公开 API 时,它就像一个魅力。但是这种方法似乎并不正确,因为每个公开的 API 都会有相同的受众(“aud”声称,与 SPA 应用程序相同的受众)。在上面的示例中,我有一个单独的应用程序注册 - 一个用于 SPA,一个用于 API。这样每个 API 都会有自己的受众,并且还会在同意屏幕中提及。
可能有人可以解释如何正确配置它?
【问题讨论】:
标签: multi-tenant msal azure-ad-v2