我正在为我的团队正在创建的一系列新服务设计一个许可系统。 这是我第一次与使用 Entra ID 进行授权管理的客户进行此操作。过去,我曾与使用手动滚动 UI 进行管理的客户打过交道。
我希望系统是基于权限的访问控制而不是基于角色的访问控制。 考虑一个场景,其中我有
trader.senior
和 trader.junior
角色。我已经在 EntraId 中针对我的应用程序创建了这些应用程序角色,并将它们分配给我的测试用户。然而,这需要我用 /executeTrade
来保护我的 [Authorize(Roles = "trader.senior, trader.junior")]
端点。
我希望能够做到
[MyCustomAuthorizaion(permission = "trade.execute"]
。这意味着我需要创建一个名为 trade.execute
的权限,并将该权限分配给 trader.senior
和 trader.junior
角色。
但是,我一直不知道如何在 Entra ID 上进行设置。这是不可能的,还是我只是找错地方了?我应该采取完全不同的方法吗?
我考虑过的替代方法:
Senior Trader
和 Junior Trader
组以及 trade.execute
角色。然后我可以将 trade.execute
角色分配给上述组,并将用户分配给这些组。注意:Microsoft Entra ID 不支持您所描述的基于权限的访问控制,即权限直接分配给角色。您将需要实施自定义解决方案来实现此功能。
否则正如您所提到的,您可以使用Entra Groups来管理权限:
Senior Trader
和Junior Trader
创建群组:
根据您的要求在 Microsoft Entra ID 应用程序中创建应用程序角色:
并将角色分配给企业应用程序中的组: