在 Azure AD 中处理 spa Sharepoint 在线应用程序的安全性
Handling security in Azure AD for a spa Sharepoint online app
我们已经为 Sharepoint online 构建了一个前置单页应用程序。安全性与 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+组...
由于每个员工有大量组,我们现在遇到很多问题。
处理这种特定安全性的最佳做法是什么?
在单独的数据库中处理安全性或使用多租户作为解决方案...
提前致谢。
您正在寻找的是 Group-based 身份验证。
你可以configure the Azure AD Application Registration for group attributes。您只需要修改应用程序清单中的“groupMembershipClaims”字段:
"groupMembershipClaims": "SecurityGroup"
然后令牌将包含用户所属组的 ID,如下所示:
{
"groups": ["group id"]
}
此方法有一个限制:
为确保令牌大小不超过 HTTP header 大小限制,Azure AD 限制了它包含在组声明中的 objectId 的数量。如果用户所属的组数超过超额限制(SAML 令牌为 150 个,JWT 令牌为 200 个),则 Azure AD 不会发出令牌中的组声明。相反,它在令牌中包含超额声明,指示应用程序查询图形 API 以检索用户的组成员资格。在这种情况下,您只会返回一个超龄指示器声明,如 hasGroups
告诉您用户是许多组的一部分,您应该调用图 api 来获取所有组的列表。
使用 Microsoft Graph user: getMemberGroups 检查用户所属的组。
如果您为 SPA 使用隐式授权流,则必须检查 hasGroups
声明,因为在这种情况下 groups
声明不会 return。
其他细节你可以和两个SOPost:
联系
我们已经为 Sharepoint online 构建了一个前置单页应用程序。安全性与 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+组...
由于每个员工有大量组,我们现在遇到很多问题。
处理这种特定安全性的最佳做法是什么? 在单独的数据库中处理安全性或使用多租户作为解决方案...
提前致谢。
您正在寻找的是 Group-based 身份验证。
你可以configure the Azure AD Application Registration for group attributes。您只需要修改应用程序清单中的“groupMembershipClaims”字段:
"groupMembershipClaims": "SecurityGroup"
然后令牌将包含用户所属组的 ID,如下所示:
{
"groups": ["group id"]
}
此方法有一个限制:
为确保令牌大小不超过 HTTP header 大小限制,Azure AD 限制了它包含在组声明中的 objectId 的数量。如果用户所属的组数超过超额限制(SAML 令牌为 150 个,JWT 令牌为 200 个),则 Azure AD 不会发出令牌中的组声明。相反,它在令牌中包含超额声明,指示应用程序查询图形 API 以检索用户的组成员资格。在这种情况下,您只会返回一个超龄指示器声明,如 hasGroups
告诉您用户是许多组的一部分,您应该调用图 api 来获取所有组的列表。
使用 Microsoft Graph user: getMemberGroups 检查用户所属的组。
如果您为 SPA 使用隐式授权流,则必须检查 hasGroups
声明,因为在这种情况下 groups
声明不会 return。
其他细节你可以和两个SOPost:
联系