问题描述
我们有一个由非Azure提供程序托管的SaaS Web应用程序。目前用户通过内置的个人用户帐户访问它,但我们正在通过Azure AD(Open ID Connect)实现多租户SSO。此处的目标是让每个组织(使用Azure AD)订阅我们的Web应用程序,以允许其用户登录。
我现在正在尝试了解如何使用过滤与来自具有订阅的组织的用户进行匹配。
据我所知,租户ID似乎是给定组织的密钥标识符,验证令牌发行者是开始限制非订阅组织的地方。看起来我可以从声明中获得租户ID(http://schemas.microsoft.com/identity/claims/tenantid),这意味着我可以在代码中验证租户。因此,我的简单方法是存储一个订阅的租户ID列表,并在登录过程中匹配它们。
以下是我的问题:
- 我是否需要每个组织向我提供其租户ID,以便我可以在登录过程中保留与之匹配的列表?
- 如果是,租户ID是否为敏感信息?
- 是否有办法在Azure AD门户本身中管理订阅组织或租户ID的列表,以便我不需要在代码中对其进行过滤操作?
提前感谢。
推荐答案
Stackoverflow中有很多与Azure AD中的多租户相关的问题,但没有一个涉及租户ID的管理。对我来说,有一个显而易见的问题,比如&太好了,我们有超过1000个客户端在使用Azure AD,并且希望在我们的应用程序中使用SSO。我可以很好地猜测它们的域是什么,但是租户ID是我正确管理访问所需的真正唯一标识符。那么,我如何切实地从1000多个客户那里获得这些信息,并且这些信息敏感吗?&Quot;
Microsoft文档总是对租户ID的插图进行编辑,因此您可能认为这是敏感信息,但我发现公开获取这些信息非常容易。您所要做的就是将以下URL复制到浏览器中,您将看到租户ID:
https://login.microsoftonline.com/[your-tenant's-domain]/.well-known/openid-configuration
所以对于任何感兴趣的人,以下是我自己问题的答案:
我是否需要每个组织向我提供其租户ID,以便我可以在登录过程中保留与之匹配的列表?是,这样更好,因为租户ID是唯一的,但如果您确信租户的公用域与他们在Azure AD中使用的域相同,则可以使用上述方法获取租户ID。
如果是,租户ID是否为敏感信息?提供了如上所述查找租户ID的简单方法,希望不会!
是否可以在Azure AD门户本身中管理订阅组织或租户ID的列表,以便我不需要在代码中对其进行过滤操作?可以。这称为租户限制,这是一个完美的解决方案,但只有当您在Azure AD中拥有Premium 1许可证时才能使用它,该许可证等于$(请参阅https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/tenant-restrictions)。
这篇关于使用多租户Azure AD SSO(开放式ID连接)识别和筛选租户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!