企业应用程序中基于组角色的授权

时间:2019-05-30 01:10:20

标签: azure-active-directory azure-web-sites microsoft-identity-platform

我已使用Azure应用程序注册来注册我的应用程序。在清单中,我添加了appRoles。然后,我使用Azure企业应用程序将用户和组添加到我创建的appRoles中。是否需要在清单中更新“ groupMembershipClaims”:“ SecurityGroup”,因为我在企业应用程序中添加了组?我可以对企业应用程序中的组使用基于角色的声明吗?

1 个答案:

答案 0 :(得分:0)

您可能在这里混淆了两个完全不同的概念。我将在下面提供有关每一项的详细信息,然后您可以决定是否确实需要为您的应用程序提出集体声明。

我的猜测是您对角色声明感兴趣,因此不需要更新应用清单以包含"groupMembershipClaims": "SecurityGroup",但是您是判断应用需求的最佳选择。

应用程序角色

您可以通过编辑应用清单和添加appRoles来定义应用角色。现在,您可以将这些角色分配给单个用户,甚至分配给Azure AD组。

  • 为个人用户分配角色

    您可以转到企业应用程序,然后使用门户网站UI将角色分配给各个用户。看来您已经为您的应用完成了此操作。当用户登录到您的应用程序时,传入的访问令牌包含该用户的角色声明。例如"roles": ["MyAppCustomRole1"]

  • 向Azure AD组分配角色

    您可以将应用程序角色分配给Azure AD组(如果您具有Azure AD Premium)。特别是在与大量用户打交道时,这可能很方便。这样,您无需将appRole分配给单个用户,而是可以凭借其组成员身份进行批量分配。

    如果这是您要执行的操作,则无需更新您的应用清单以包含"groupMembershipClaims": "SecurityGroup"

示例代码-Authorization in a web app using Azure AD application roles & role claims

Microsoft文档-Application roles

团体索赔

通过编辑应用程序的清单(可以直接在Azure Portal中完成)并将"groupMembershipClaims"属性设置为"All",可以启用组声明作为应用程序访问令牌的一部分"SecurityGroup"

一旦按照清单所述更新了应用清单,您就可以将Group Id作为声明的一部分。这是解码的JWT令牌的快速示例。请注意,与先前说明的角色声明相比,这是完全不同的声明

enter image description here

示例代码-Authorization in a web app using Azure AD groups & group claims

具有角色的组

请了解Azure AD组及其成员身份与任何单个应用程序都是完全分开的。

Azure AD组的生存期也可能不同,即,在删除或不再需要应用程序后很长一段时间内,该组可能会继续存在。

另一方面,应用程序角色与一个特定的应用程序密切相关。

对于某些应用程序,授权策略是检查用户的组成员身份而不是应用程序特定角色。我还看到了一些案例,其中应用程序根据应用程序特定角色和用户所属的组的组合来做出授权决策。


请注意,为确保令牌大小不超过HTTP标头大小限制,Azure AD限制了它包含在组声明中的objectId数量。如果用户属于超过超出限制的组的更多成员(SAML令牌为150,JWT令牌为200),则Azure AD不会在令牌中发出组声明。相反,它在令牌中包含一个超额声明,该声明指示应用程序查询Graph API以检索用户的组成员身份。

其他相关的SO帖子: