无法获取Azure AD用户的组

问题描述 投票:1回答:1

我目前正在使用node.js护照库使用OIDC策略使用客户端ID和密码的azure注册应用进行身份验证。

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\"}}

我不确定我需要做什么来使用它来获得组。我尝试生成一个不记名令牌,将其传递到标题中,并获取组,但它说我未经授权使用邮递员。我是否需要在应用中使用某些权限?当我尝试使用graph.microsoft.com时,为什么还要使用graph.windows.net?

用户登录后是否有更简单的方法可以执行此操作?

azure azure-active-directory passport.js microsoft-graph azure-ad-graph-api
1个回答
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端点(不是测试版),因此您应该使用Microsoft Graph API。

以下是几个相关的SO帖子:SO Post 1SO Post 2

© www.soinside.com 2019 - 2024. All rights reserved.