【问题标题】:Multi-Tenant Azure Active Directory application with Msal for Angular 6带有 Msal for Angular 6 的多租户 Azure Active Directory 应用程序
【发布时间】:2020-02-01 05:16:03
【问题描述】:

我们正在开发任何拥有有效 Azure 帐户的用户都可以使用的 SPA(单页应用程序)。该应用使用 Azure 资源管理 (user_impersonation) 等权限来显示统计信息并监控一些 Azure 资源。

该应用程序是使用 Angualr 6+ 构建的,我们使用最新版本的 Msal-Angular 进行身份验证。 (安装了 rxjs-compact 包以支持 angualr 6+)

我已经使用配置的权限在 Azure(多租户)中注册了一个应用程序注册,但是我在配置 Msal-Angular 以支持多租户时遇到问题。

我们的配置适用于组织用户,但不适用于不在我的 Active Directory 中的个人帐户。

MsalModule.forRoot({
  clientID: environment.aadClientId,
  redirectUri: environment.redirectUri,
  authority: 'https://login.microsoftonline.com/organizations/',

  protectedResourceMap: [['https://management.azure.com/', ['https://management.azure.com/.default']]]
})

如果我尝试将权限更改为“普通”,如下所示:

'https://login.microsoftonline.com/common/'

登录有效,但未正确获取范围,任何访问安全 API(例如“https://management.azure.com/”)的尝试都会产生以下错误:

错误为输入参数“范围”提供的值无效。范围 'https://management.azure.com/.default openid profile' 不存在。|invalid_scope

我做错了吗?这可以用 Msal-Angular 实现还是应该使用 Msal Core?

【问题讨论】:

  • 这个问题有什么更新吗?
  • @TonyJu 抱歉我的回复延迟。我在您的回答中添加了评论(问题):)

标签: azure authentication azure-active-directory multi-tenant msal


【解决方案1】:

要允许个人帐户登录,您需要使用公共端点https://login.microsoftonline.com/common/

并且支持的帐户类型必须是“任何组织目录(任何 Azure AD 目录 - 多租户)和个人 Microsoft 帐户(例如 Skype、Xbox)中的帐户

但是: 当您使用common 端点和个人帐户时,不支持https://management.azure.com api。此处只能使用多租户用户。

【讨论】:

  • 感谢您的评论,并对我的延误感到抱歉!我有一个问题-如果“management.azure.com”不支持个人帐户,那么没有任何方法可以实现我的需要吗?假设我正在为 Azure Functions 开发类似“Microsoft Azure 存储资源管理器”的工具,并且我想使用 Azure Active Directory 来定位个人和组织帐户(就像 Microsoft Azure 存储资源管理器所做的那样)。可能吗?我有哪些选择?
  • 如果不支持“management.azure.com”,那么 Azure 门户使用哪些权限来验证个人帐户?
  • @m1o2 这是设计使然,portal 和 powershell 可以做到这一点。我已经与 Azure 支持工程师讨论过这个问题。在这里查看我的答案。 stackoverflow.com/a/57885541/10504999
  • 我已将其标记为答案。谢谢你的帮助。您的答案的链接真的很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 2016-08-04
  • 2016-12-20
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
相关资源
最近更新 更多