如何在使用Azure AD身份验证的多租户应用程序中限制租户

9
我目前正在开发一个多租户的Angular SPA应用程序,它连接到后端的多个WebAPI,并使用AzureAD身份验证,其中每个AD代表一个租户。
Azure关于多租户的文档指向了一个名为Tailpsin.Surveys的示例应用程序,我按照页面上的步骤运行了该应用程序。但该应用程序与我的场景不同,因为它是一个WebApp而不是SPA。
在这个WebApp中,在OpenId中间件设置期间,传递了OpenIdConnectEvents的实现。该实现覆盖了TokenValidated方法,并阻止未经注册的租户。
这就是我想在我的应用程序中实现的内容,但这是否意味着每个WebAPI都应始终检查令牌上的issuer声明以验证租户?
我认为这似乎是一种重复性的操作,可能会成为性能问题。
在Azure中是否有任何配置或其他方式可以将对应用程序的访问限制为一组定义的租户?
1个回答

2
据我所知,在Azure Active Directory中没有这样的设置。'租户'周围的选项是多租户或单租户。多租户意味着从技术上讲,所有租户都可以获得您服务的访问令牌。
对于您的特定场景,我认为您希望您的服务保留一个允许调用您API的租户白名单,并检查令牌是否具有正确的'issuer'或'tid'声明。您提到您认为此检查可能会成为性能问题,但您已经检查每个令牌的'aud'声明是否正确,并检查令牌是否由Azure AD签名,并检查令牌中的'scope'/'role'声明以获取权限,因此检查额外的声明不应该增加重要的开销。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接