我目前正在使用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?
用户登录后是否有更简单的方法可以执行此操作?
当用户是许多组的成员时,过量指标声明
作为json共享的一部分,您要回来的声明是超额指标声明。
"_claim_names\":{\"groups\":\"src1\"},\"_claim_sources\":{\"src1\":{\"endpoint\":\"https://graph.windows.net/{org guid}/users/{user guid}/getMemberObjects\"}}
这意味着用户是许多组的成员,而不是包含有关所有组的信息作为令牌的一部分(这将使令牌太大),您将需要单独查询该信息。
在这里阅读更多相关信息:Access Tokens Reference
如何获取群组信息?
您的应用程序需要单独调用Microsoft Graph API
以获取用户的组信息。
相关的Microsoft Graph API
您的应用程序所需的权限
上面的每个API链接都提到了作为文档一部分所需的委派权限或应用程序权限。
您需要在Azure AD中更新您的应用注册以获取相关权限(如果所需权限需要管理员同意,还需要获得管理员同意)
令牌调用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。