如何在Microsoft Graph中的AD组中授权用户

时间:2017-02-21 07:11:13

标签: office365 microsoft-graph

我想通过Microsft Graph授权用户对抗AD组。只有AD组的成员才能访问API。执行此授权需要哪个Microsoft Graph查询(API URL)?或者还有其他选择吗?

感谢您为此提出最佳实践。

提前感谢您的建议和帮助。

最诚挚的问候, DEB

1 个答案:

答案 0 :(得分:0)

如果API使用ASP.NET,您可以使用内置的OpenID连接功能,并在要保护的API控制器或方法上使用常规[Authorize]属性。

comprehensive sample

该示例使用常规OpenID Connect身份验证,并使用JWT令牌声明来检索用户的组成员身份。如果组不能包含在JWT令牌中,则令牌将包含指向您可以检索它们的链接。这在样本的ClaimHelper.cs文件中处理。

要在JWT令牌中获取群组声明,请记住在示例的设置过程中遵循step 3,因为默认情况下它们不在那里。

您甚至可以将AAD中的组对象ID放入ASP.NET“角色”中,这样​​您就可以使用[Authorize]属性,例如[Authorize(Roles="217ea9e4-0350-4a2d-b805-d71317fa0245")],其中GUID是其成员资格的组的objectID是必需的。

要实现最后一部分,您需要先将组声明添加到清单(上面引用的步骤3),然后将TokenValidationParameters添加到您定义哪个声明类型将定义的OpenIdConnectAuthenticationOptions角色(在Startup.Auth.cs中):

  new OpenIdConnectAuthenticationOptions
  {
      // add this:
      TokenValidationParameters = new TokenValidationParameters()
      {
          RoleClaimType = "groups"
      },
      // end added code
      ClientId = ConfigHelper.ClientId,

后者可能不是最佳做法,因为您需要[Authorize]属性中的组的objectID。