带有Msal for Angular 6的多租户Azure Active Directory应用程序

时间:2019-10-02 21:45:06

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

我们正在开发一个SPA(单页应用程序),任何具有有效Azure帐户的用户都可以使用。该应用程序使用诸如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/”)的操作都会产生以下错误:

  

ERROR输入参数'scope'的提供值无效。范围“ https://management.azure.com/.default openid配置文件”不存在。| invalid_scope

我做错什么了吗?是否可以使用Msal-Angular来实现,还是应该使用Msal Core?

1 个答案:

答案 0 :(得分:1)

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

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

enter image description here

但是::使用https://management.azure.com端点和个人帐户时,不支持common API。您只能在这里使用多租户用户。