如何使用 Azure AD 身份验证限制多租户应用程序中的租户
How to restrict tenants in multitenant application with Azure AD authentication
我目前正在开发一个多租户 Angular SPA 应用程序,它在后端连接到多个 webAPI,并使用 AzureAD 身份验证,其中每个 AD 代表一个租户。
关于多租户的 Azure 文档指向一个名为 Tailpsin.Surveys 的示例应用程序,在按照页面上的步骤操作后,我能够 运行。该应用程序与我的场景不同,因为它是一个没有 SPA 的 WebApp。
在此 webApp 中,在 OpenId 中间件设置期间,传递了 OpenIdConnectEvents
的实现。
该实施覆盖 TokenValidated
方法并阻止之前未通过注册的租户。
这就是我试图在我的应用程序中实现的目标,但这是否意味着每个 WebAPI 都应该始终检查发行者对令牌的声明以验证租户?
我认为这似乎是重复的事情,可能会变成性能问题。
Azure 中是否有任何配置或一些其他方式将对您的应用程序的访问限制为一组定义的租户?
据我所知,Azure Active Directory 中没有这样的设置。 'tenancy' 周围的选项是多租户或单租户。多租户意味着从技术上讲,所有租户都可以获得您的服务的访问令牌。
对于您的具体情况,我相信您希望您的服务保留允许调用您的 API 的租户白名单,并检查令牌是否具有正确的 issuer
或 tid
索赔。你提到你认为这个检查可能是一个性能问题,但你已经在检查每个令牌 aud
声明是否正确,令牌是否由 Azure AD 签名,并检查 scope
/ role
在令牌中声明权限,因此检查额外的声明应该不会真正增加大量开销。
我目前正在开发一个多租户 Angular SPA 应用程序,它在后端连接到多个 webAPI,并使用 AzureAD 身份验证,其中每个 AD 代表一个租户。
关于多租户的 Azure 文档指向一个名为 Tailpsin.Surveys 的示例应用程序,在按照页面上的步骤操作后,我能够 运行。该应用程序与我的场景不同,因为它是一个没有 SPA 的 WebApp。
在此 webApp 中,在 OpenId 中间件设置期间,传递了 OpenIdConnectEvents
的实现。
该实施覆盖 TokenValidated
方法并阻止之前未通过注册的租户。
这就是我试图在我的应用程序中实现的目标,但这是否意味着每个 WebAPI 都应该始终检查发行者对令牌的声明以验证租户?
我认为这似乎是重复的事情,可能会变成性能问题。
Azure 中是否有任何配置或一些其他方式将对您的应用程序的访问限制为一组定义的租户?
据我所知,Azure Active Directory 中没有这样的设置。 'tenancy' 周围的选项是多租户或单租户。多租户意味着从技术上讲,所有租户都可以获得您的服务的访问令牌。
对于您的具体情况,我相信您希望您的服务保留允许调用您的 API 的租户白名单,并检查令牌是否具有正确的 issuer
或 tid
索赔。你提到你认为这个检查可能是一个性能问题,但你已经在检查每个令牌 aud
声明是否正确,令牌是否由 Azure AD 签名,并检查 scope
/ role
在令牌中声明权限,因此检查额外的声明应该不会真正增加大量开销。