如何对 Azure AD 中特定区域的用户进行身份验证和授权?

Posted

技术标签:

【中文标题】如何对 Azure AD 中特定区域的用户进行身份验证和授权?【英文标题】:how to do authentication and authorization for the users for the specific regions in azure AD? 【发布时间】:2021-03-12 23:44:10 【问题描述】:

网络核心应用程序。我正在尝试实现身份验证和授权。我有用户,他们被分成多个区域。例如我有以下地区。

GE GSAS
 - user1
 - user2
APAC
 -user3
 -user4
SE&A
 -user5
 -user6

这些用户具有不同的权限或角色。例如,RegionalAdmin、GlobalAdmin、Users 等 这些用户将在门户中创建一些订单。例如,区域负责人可以仅将该区域内的订单重新分配给其他用户。对于全球负责人,他/她可以将订单重新分配给任何人。用户可以创建订单和查看删除,用户不能重新分配订单。所有这些用户都是 Azure AD 租户的一部分。现在我正在尝试实现身份验证和授权。我开始考虑这样的设计策略,我可以根据区域创建组并将用户添加到组中。根据组,我可以进行身份​​验证或授权。但是这些用户具有不同的权限,例如区域管理员、全局管理员等,并且这些用户在 web/api 权限中具有一些额外的功能。有人可以帮助我解决这个问题以及如何针对上述情况组织组或角色。任何帮助都将不胜感激。谢谢

【问题讨论】:

你想要基于组的授权吗? 嗨,Carl,我在每个区域都有一组用户,这个用户本身应该有不同的权限,比如一个是管理员,另一个是用户等。所以我不确定我应该如何设计这个和我在选择组和角色之间感到困惑 【参考方案1】:

假设您提到的区域管理员在您的应用程序中是一个自定义角色(因为在 AAD 中没有这样的角色),使用administrative-units 总是更好,建议的方法是为区域管理员单独创建组,全局管理员用户并相应地为这些组分配角色。

可以将一个用户分配给多个组,并且可以将角色分配给各个用户/组。

根据管理员授予组的角色权限对应用程序进行授权。有关如何在 Azure AD 中为应用程序创建/管理角色的详细文档,请参阅此 link。

【讨论】:

感谢 dinakr。所以首先我应该为每个区域创建组并添加所有用户。然后在每个区域中为区域管理员和全局管理员再次创建组,并向其中添加所需的用户。然后,我应该为每个组分配角色。这样的做法对吗? 是的。这种方法符合上述要求。 因此,例如,在 region1 中,如果有 10 个用户,那么我将创建组 region1 并添加所有 10 个用户并将用户角色添加到该组。然后例如在 10 个用户中有 2 个是全局管理员,那么我将创建组 region1globaladmin 并添加这 2 个用户并将该组分配给 reggion1globaladmin 角色。对于 region2 也将执行相同的操作。这是方法对吗?但小问题是我们最终会创建很多组对吗? 在 AAD 中,全局管理员角色可以读取和修改 Azure AD 组织中的每个管理设置。因此,这将是租户级别的。有关角色和权限的更多详细信息,请参阅以下链接。如果您能详细说明上述示例中区域的含义,将会很有帮助? docs.microsoft.com/en-us/azure/active-directory/roles/… 假设上述场景中的全局管理员是一组用户,自定义角色和地域作为分组的隔离标准,那么不同地域的全局管理员角色和权限是否不同?如果没有,那么您可以只为两个/多个区域创建一个组,否则您可能需要创建单独的组。对于越来越多的组,始终建议遵循管理单元(下面的链接)以有效隔离用户/组管理。 docs.microsoft.com/en-us/azure/active-directory/roles/…

以上是关于如何对 Azure AD 中特定区域的用户进行身份验证和授权?的主要内容,如果未能解决你的问题,请参考以下文章

是否有人成功使用 Azure AD 对 Node.js Web 应用程序的用户进行身份验证?

如何使用身份服务器 3 和 microsoft 团队应用程序使用 Azure AD 令牌进行身份验证

ASP NET API - 在不打开 Microsoft 登录页面的情况下使用 Azure AD SAML 协议对用户进行身份验证

使用 Xamarin Forms 使用自签名证书对 Azure AD 进行身份验证

如何搭建一套Azure AD与ADFS集成身份的环境

配置了 Azure AD RBAC 的 Azure DevOp Pipelines 对 AKS 的身份验证?