我们可以验证特定组的用户在Active Directory中
我可以在Active Directory用户进行身份验证,但我需要知道我们可以在组认证一个特定的用户,如果我们有多个组。 基本上我重定向到http://[mydirectory].onmicrosoft.com和验证用户,但我需要知道我们是否有机制来验证从特定组中的用户,这样我可以根据用来接入。我们可以验证特定组的用户在Active Directory中
假设这是天青 AD(而不是本地的Windows Server AD),那么你有三种选择来限制通过组访问应用程序。
选项1:要求用户/组分配到应用
这是一个不需要在应用程序中添加授权逻辑的唯一选择。
在配置中的经典Azure的门户应用程序,您可以设置应用程序需要用户分配:
然后,在“用户和组”该应用程序,您可以选择个人用户或组应该有权访问应用程序。
这里要考虑的最重要的事情是,这只适用于直接组的成员,而不是嵌套成员。
选项2:要求组织声称
此选项可以让你请求后,用户已签订了含有组列表中的用户是其成员的令牌返回给应用程序。这包括他们是传递成员(即嵌套组)的组。
从经典Azure的门户应用程序的配置页面,你可以下载和上传应用程序的清单JSON文件。在清单中,找到"groupMembershipClaims"
属性,并将其设置为"All"
或"SecurityGroup"
(后者将排除分发列表)。
设置此设置后,用户登录后,得到的令牌将有一个groups
声明,其中包含该用户所属的组对象ID的列表。然后,您的应用程序可以使用这些声明来决定用户是否应该访问。
Dushyant吉尔进入小组声称在细节在他的博客文章:http://www.dushyantgill.com/blog/2014/12/10/authorization-cloud-applications-using-ad-groups/
重要的考虑在这里是有是可以返回组数的限制。如果用户是此限制的更多组的成员,则会发出“超额”声明,并且您的应用程序需要进行Azure AD Graph API调用以获取完整列表。 (这也是在Dushyant的博客中。)
选项3:使用的Microsoft Graph API或Azure AD Graph API直接
最后的选择是简单地调用微软图形API(或在Azure AD图形API ,它们的行为几乎完全相同)来确定登录用户是否为给定组的成员。然后您的应用程序可以做出授权决定。
有可以采取几种方法(所有这些都是可传递的检查,因此嵌套组被支持):
-
isMemberOf
来检查该用户是否是特定的(单)组的成员。如果单个组应授予您应用的访问权限,这是最简单的。 -
checkMemberGroups
检查用户是否为组列表中的任何组的成员。如果不同的组在应用程序中授予不同的角色或权限,这很有用。 -
getMemberGroups
返回用户所属组的完整列表。这对于进行授权检查通常不是特别有用。
我想你是混合身份验证和授权。一旦用户成功通过身份验证(即他们能够正确登录),您可以根据用户的组在应用程序中定义授权规则,以允许/拒绝访问应用程序的某些部分。 –
你使用图形API?如果是这样,你可以使用checkMemberGroups方法。 https://msdn.microsoft.com/library/azure/ad/graph/api/functions-and-actions#checkMemberGroups正如前面的评论中提到的,你试图实现的是基于角色的“授权” – Aravind
你有没有样本以基于用户凭证对组进行授权。目前我正在重定向到http:// [mydirectory] .onmicrosoft.com并进行身份验证。经过身份验证后,我没有收到任何令牌,因此我可以使用Active Directory组进行验证。 –