无法获取Azure广告用户';s组

无法获取Azure广告用户';s组,azure,azure-active-directory,passport.js,microsoft-graph-api,azure-ad-graph-api,Azure,Azure Active Directory,Passport.js,Microsoft Graph Api,Azure Ad Graph Api,我目前正在使用node.js passport库使用OIDC策略对azure注册的应用程序进行身份验证,该应用程序使用客户端ID和密码 http://login.microsoftonline.com/{org id}/v2.0/.well-known/openid-configuration 我在获取登录者的用户配置文件方面没有任何问题,但在获取群组时,我遇到了麻烦。在我的应用程序中,我需要根据用户的active directory组对其进行授权。我正在取回这段json: "_claim_n

我目前正在使用node.js passport库使用OIDC策略对azure注册的应用程序进行身份验证,该应用程序使用客户端ID和密码

http://login.microsoftonline.com/{org id}/v2.0/.well-known/openid-configuration
我在获取登录者的用户配置文件方面没有任何问题,但在获取群组时,我遇到了麻烦。在我的应用程序中,我需要根据用户的active directory组对其进行授权。我正在取回这段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


一旦用户登录,是否有更简单的方法来完成此操作?

当用户是多个组的成员时,超龄指示器声明

作为讨论中的json共享的一部分,您得到的声明是一个超龄指示器声明

"_claim_names\":{\"groups\":\"src1\"},\"_claim_sources\":{\"src1\":{\"endpoint\":\"https://graph.windows.net/{org guid}/users/{user guid}/getMemberObjects\"}}
这意味着用户是许多组的成员,您需要单独查询这些信息,而不是将所有组的信息作为令牌的一部分(这会使令牌太大)

请在此处阅读更多信息:

如何获取群组信息?

您的应用程序需要单独调用
Microsoft Graph API
,以获取用户的组信息

相关的Microsoft Graph API

应用程序所需的权限

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

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

调用Microsoft Graph API的令牌

您提到您已经尝试生成一个承载令牌,并将其传递到一个头中,但您遇到了未经授权的错误

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

另外,如果任何权限需要管理员同意,请确保您通过管理员同意。如果是单租户应用程序,则管理员直接从azure portal“授予权限”应该有效,如果是多租户应用程序,则可以使用

代码示例:下面是一个简单的示例。。你也可以找到其他好的

Azure广告图形API(
Graph.windows.net
)与Microsoft图形API(
Graph.Microsoft.com

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

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

由于有关组的信息已在v1 endpoint for Microsoft Graph(非测试版)中提供,因此您应该使用Microsoft Graph API


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

我认为你得到的是一个超龄索赔。。表示该用户是多个组的一部分。。你可以在这里读到更多关于它的内容。。关于下一步如何为用户获取有关组的信息。。Microsoft Graph API将非常有用,因为您将能够绕过因令牌大小而导致的超龄情况。。这里的SO帖子中也有类似的讨论。。1) 2)一旦我/授权,我得到一个代码,我将代码传递到/token,然后得到一个token。那么我可以使用令牌来调用graph api吗?另外,我读到有一个刷新令牌,这是我需要存储的东西吗?我看到它出现过一次,但我现在无法获取它,它给了我一个错误“OAuth2授权代码已被兑换,请使用新的有效代码重试,或使用现有的刷新令牌”,因此我不确定如何再次获取令牌。谢谢,我要找什么类型的示波器?我将查看代码示例