获取Azure AD用户组时遇到问题

时间:2019-04-01 21:01:42

标签: azure azure-active-directory passport.js microsoft-graph azure-ad-graph-api

我目前正在使用node.js护照库通过OIDC策略对使用客户端ID和机密的天蓝色注册应用程序进行身份验证。

http://login.microsoftonline.com/{org id}/v2.0/.well-known/openid-configuration

让用户个人资料回到登录的人那里没有任何麻烦,但是在尝试获取组时遇到了麻烦。在我的应用程序中,我需要根据用户的活动目录组对其进行授权。我正在找回这首json:

"_claim_names\":{\"groups\":\"src1\"},\"_claim_sources\":{\"src1\":{\"endpoint\":\"https://graph.windows.net/{org guid}/users/{user guid}/getMemberObjects\"}}

我不确定要使用它来获取组需要做什么。我尝试生成承载令牌,将其传递到标头中,然后获取组,但它表示我未经许可使用Postman。我需要在应用程序中获得某些权限吗?当我尝试使用graph.microsoft.com时,为什么还要使用graph.windows.net?

用户登录后,有没有更简便的方法?

1 个答案:

答案 0 :(得分:1)

用户为多个组的成员时的超额指示器声明

作为有问题的json共享您要返回的声明是超额指示器声明。

"_claim_names\":{\"groups\":\"src1\"},\"_claim_sources\":{\"src1\":{\"endpoint\":\"https://graph.windows.net/{org guid}/users/{user guid}/getMemberObjects\"}}

这意味着用户是许多组的成员,而不是将有关所有组的信息作为令牌的一部分包含在内(这会使令牌太大),您将需要分别查询该信息。

在此处了解更多信息:Access Tokens Reference

enter image description here

如何获取组信息?

您的应用程序需要单独调用Microsoft Graph API才能获取用户的网上论坛信息。

相关的Microsoft Graph API

您的应用程序所需的权限

上面的每个API链接都提到了作为文档一部分所必需的委托或应用程序权限。

您将需要在Azure AD中更新您的应用程序注册,以获取相关权限(如果需要的权限需要管理员同意,还需要征得管理员同意)

app registrations preview experience

调用Microsoft Graph API的令牌

您提到您曾尝试生成承载令牌,并将其传递到标头中,但遇到未授权错误。

完成对应用程序权限的更改后,请从应用程序中获取专门用于Microsoft Graph API的令牌。用于访问您的应用程序的承载令牌可能无法直接与Microsoft Graph API一起使用。

还要确保您已获得管理员同意,以防万一任何权限需要管理员同意。如果是单个承租人应用程序,则管理员直接从azure门户直接获得“授予权限”即可,如果是多承租人应用程序,则可以使用Admin consent endpoint

代码示例:这是一个快速的tutorial for calling Microsoft Graph using Node.js ..您也可以找到其他不错的示例。

Azure AD Graph API(graph.windows.net)与Microsoft Graph API(graph.microsoft.com

您对端点有一个有效的问题。.“为什么当我尝试使用graph.microsoft.com时为什么还要使用graph.windows.net?”

通常的建议是使用更新的Microsoft Graph API,除非您要查找的功能/信息对Microsoft Graph不可用,并且只有Azure AD Graph API可以提供帮助。在此处阅读有关推荐和比较的更多信息:Microsoft Graph or Azure AD Graph

由于有关组的信息已在Microsoft Graph的v1端点中提供(不是beta),因此您应该使用Microsoft Graph API。

以下是一些相关的SO帖子:SO Post 1SO Post 2