我有几十个Azure Active Directory API和SPA相互通信。这是一个例子:
这些SPA和API在Azure Active Directory中都有一个应用程序和客户端ID,但它们是多租户的,因为它们使用基于角色的访问控制(RBAC)为多个国家/地区的内部用户提供服务)。
以上所有应用程序都在内部运行,但我有一项新要求,即我们需要将SPA应用程序移交给公司外部的用户,并且他们不应该看到其他租户的SPA部分以及他们一定不能为其他租户调用API。如何实现这一目标?
答案 0 :(得分:1)
对于您的方案,我认为您可以使用Azure AD App roles。
例如:
您可以在SPA的Azure AD应用程序中创建两个角色。一个是Admin
,可以访问整个SPA站点和API 1.一个是User
,只能访问部分SPA而无法访问API 1.然后您可以为用户分配角色。如果您有AAD basic或Premuim,您可以为组分配角色。
完成此操作后,您将获得id_token中的角色信息。这样您就可以为他们提供不同的SPA访问权限。其余的工作应该在您的SPA中构建,以便为不同的用户提供不同的访问权限。
您还可以阅读joonas撰写的this blog以获取更多详情。
Addtional,这个答案只是我想的一个解决方案,它可能与你无法测试的真实场景有点不同。
希望这有帮助!