2016-06-08 112 views
0

我可以在Active Directory用户进行身份验证,但我需要知道我们可以在组认证一个特定的用户,如果我们有多个组。 基本上我重定向到http://[mydirectory].onmicrosoft.com和验证用户,但我需要知道我们是否有机制来验证从特定组中的用户,这样我可以根据用来接入。我们可以验证特定组的用户在Active Directory中

+0

我想你是混合身份验证和授权。一旦用户成功通过身份验证(即他们能够正确登录),您可以根据用户的组在应用程序中定义授权规则,以允许/拒绝访问应用程序的某些部分。 –

+0

你使用图形API?如果是这样,你可以使用checkMemberGroups方法。 https://msdn.microsoft.com/library/azure/ad/graph/api/functions-and-actions#checkMemberGroups正如前面的评论中提到的,你试图实现的是基于角色的“授权” – Aravind

+0

你有没有样本以基于用户凭证对组进行授权。目前我正在重定向到http:// [mydirectory] ​​.onmicrosoft.com并进行身份验证。经过身份验证后,我没有收到任何令牌,因此我可以使用Active Directory组进行验证。 –

回答

4

假设这是天青 AD(而不是本地的Windows Server AD),那么你有三种选择来限制通过组访问应用程序。

选项1:要求用户/组分配到应用

这是一个不需要在应用程序中添加授权逻辑的唯一选择。

在配置中的经典Azure的门户应用程序,您可以设置应用程序需要用户分配:

Toggle for 'User assignment to app required'

然后,在“用户和组”该应用程序,您可以选择个人用户或组应该有权访问应用程序。

这里要考虑的最重要的事情是,这只适用于直接组的成员,而不是嵌套成员。

选项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 APIAzure AD Graph API直接

最后的选择是简单地调用微软图形API(或在Azure AD图形API ,它们的行为几乎完全相同)来确定登录用户是否为给定组的成员。然后您的应用程序可以做出授权决定。

有可以采取几种方法(所有这些都是可传递的检查,因此嵌套组支持):

  • isMemberOf来检查该用户是否是特定的(单)组的成员。如果单个组应授予您应用的访问权限,这是最简单的。
  • checkMemberGroups检查用户是否为组列表中的任何组的成员。如果不同的组在应用程序中授予不同的角色或权限,这很有用。
  • getMemberGroups返回用户所属组的完整列表。这对于进行授权检查通常不是特别有用。
相关问题