【问题标题】:Handling security in Azure AD for a spa Sharepoint online app在 Azure AD 中处理 spa Sharepoint 在线应用程序的安全性
【发布时间】:2021-06-13 14:46:45
【问题描述】:

我们已经为 Sharepoint 在线构建了一个前置单页应用程序。安全性与 AAD 安全组同步到共享点。但目前我们面临很多问题,因为我们必须为它创建许多 Azure AD 安全组。

该应用是一个门户网站,有两种用户:

  • 客户(AAD 中的来宾用户)
  • 员工(我们的 AAD 员工)

每位客户都拥有从 AAD 同步的安全组的 Sharepoint Online 站点。

我们定义了一些客户角色(财务总监、人力资源总监、IT ......) 以及每个客户的一些员工角色。 (CUST_000000_AccountManager、CUST_000000_Invoicing、CUST_000000_Employee)。 00000 代表客户 ID。所以我们的员工在 Azure AD 中定义了很多安全组。

总而言之,这意味着对于每个客户,AAD 中有 20 个安全组。这些安全组与我们的 200 多名员工和 8000 名客户同步。总共 28 000 000+ 组...

由于每个员工的团队数量众多,我们现在遇到了很多问题。

处理这种特定安全性的最佳做法是什么? 在单独的数据库中处理安全性或使用多租户作为解决方案...

提前致谢。

【问题讨论】:

  • 您好,您检查我的答案了吗?有用吗?

标签: azure-active-directory sharepoint-online multi-tenant


【解决方案1】:

您正在寻找的是基于组的身份验证。

您可以configure the Azure AD Application Registration for group attributes。您只需要修改应用清单中的“groupMembershipClaims”字段:

"groupMembershipClaims": "SecurityGroup"

然后令牌将包含使用所属组的 ID,如下所示:

{
  "groups": ["group id"]
}

此方法有一个限制:

为确保令牌大小不超过 HTTP 标头大小限制,Azure AD 限制了它包含在组声明中的 objectId 的数量。如果用户是超过超额限制的组的成员(SAML 令牌为 150 个,JWT 令牌为 200 个),则 Azure AD 不会在令牌中发出组声明。相反,它在令牌中包含一个超额声明,指示应用程序查询 Graph API 以检索用户的组成员资格。在这种情况下,您只会收到像 hasGroups 这样的超龄指标声明,告诉您用户属于许多组,您应该调用 graph api 来获取所有组的列表。

使用 Microsoft Graph user: getMemberGroups 检查用户所属的组。

如果您为 SPA 使用隐式授权流,则必须检查 hasGroups 声明,因为在这种情况下不会返回 groups 声明。

其他详情可以查看两个SO Post:

How to check if a user is in an AD group via Azure AD?

How to validate if user is part of group in Azure AD?

【讨论】:

  • 如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。见meta.stackexchange.com/questions/5234/…。这对其他社区成员可能是有益的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 2015-09-03
  • 2023-03-14
相关资源
最近更新 更多