获取 Azure AD 用户组时遇到问题
Having trouble getting Azure AD user's groups
我目前正在使用 node.js 护照库,通过使用客户端 ID 和密码的 Azure 注册应用程序使用 OIDC 策略进行身份验证。
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\"}}
我不确定我需要做什么来使用它来获取组。我尝试生成一个不记名令牌,在 header 中传递它并获取组,但它说我未经授权使用 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\"}}
这意味着用户是许多组的成员,而不是将有关所有组的信息作为令牌的一部分(这会使令牌太大),您需要单独查询该信息。
在此处阅读更多相关信息:Access Tokens Reference
如何获取群组信息?
您的应用程序需要单独调用 Microsoft Graph API
以获取用户的组信息。
相关 Microsoft Graph APIs
您的应用程序所需的权限
上面的每个 API 链接都提到了所需的委托或应用程序权限,这些权限是文档的一部分。
您将需要更新您在 Azure AD 中的应用程序注册以要求获得相关权限(并且还要经过管理员同意,以防所需权限需要管理员同意)
调用 Microsoft Graph 的令牌API
您提到您已尝试生成不记名令牌,并在 header 中传递它,但出现未经授权的错误。
完成应用程序的权限更改后,从您的应用程序中获取专用于 Microsoft Graph API 的令牌。用于访问您的应用程序的不记名令牌可能无法直接与 Microsoft Graph API 一起使用。
另外请确保您已获得管理员同意,以防任何权限需要管理员同意。如果它是单租户应用程序,管理员直接从 Azure 门户 "grant permissions" 应该可以工作,如果是 multi-tenant 应用程序,您可以使用 Admin consent endpoint。
代码示例:这是一个快速的 tutorial for calling Microsoft Graph using Node.js..您可能还会找到其他好的。
Azure AD Graph API (graph.windows.net
) 与 Microsoft Graph API (graph.microsoft.com
)
您对端点有一个有效的问题.. "Also why is it using graph.windows.net when I'm trying to use graph.microsoft.com?"
一般建议使用较新的 Microsoft Graph API,除非您正在寻找的 functionality/information 不适用于 Microsoft Graph,只有 Azure AD Graph API 可以帮助。在此处阅读有关推荐和比较的更多信息:Microsoft Graph or Azure AD Graph
由于有关组的信息已经在 Microsoft Graph 的 v1 端点中可用(不是测试版),您应该使用 Microsoft Graph API。
我目前正在使用 node.js 护照库,通过使用客户端 ID 和密码的 Azure 注册应用程序使用 OIDC 策略进行身份验证。
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\"}}
我不确定我需要做什么来使用它来获取组。我尝试生成一个不记名令牌,在 header 中传递它并获取组,但它说我未经授权使用 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\"}}
这意味着用户是许多组的成员,而不是将有关所有组的信息作为令牌的一部分(这会使令牌太大),您需要单独查询该信息。
在此处阅读更多相关信息:Access Tokens Reference
如何获取群组信息?
您的应用程序需要单独调用 Microsoft Graph API
以获取用户的组信息。
相关 Microsoft Graph APIs
您的应用程序所需的权限
上面的每个 API 链接都提到了所需的委托或应用程序权限,这些权限是文档的一部分。
您将需要更新您在 Azure AD 中的应用程序注册以要求获得相关权限(并且还要经过管理员同意,以防所需权限需要管理员同意)
调用 Microsoft Graph 的令牌API
您提到您已尝试生成不记名令牌,并在 header 中传递它,但出现未经授权的错误。
完成应用程序的权限更改后,从您的应用程序中获取专用于 Microsoft Graph API 的令牌。用于访问您的应用程序的不记名令牌可能无法直接与 Microsoft Graph API 一起使用。
另外请确保您已获得管理员同意,以防任何权限需要管理员同意。如果它是单租户应用程序,管理员直接从 Azure 门户 "grant permissions" 应该可以工作,如果是 multi-tenant 应用程序,您可以使用 Admin consent endpoint。
代码示例:这是一个快速的 tutorial for calling Microsoft Graph using Node.js..您可能还会找到其他好的。
Azure AD Graph API (graph.windows.net
) 与 Microsoft Graph API (graph.microsoft.com
)
您对端点有一个有效的问题.. "Also why is it using graph.windows.net when I'm trying to use graph.microsoft.com?"
一般建议使用较新的 Microsoft Graph API,除非您正在寻找的 functionality/information 不适用于 Microsoft Graph,只有 Azure AD Graph API 可以帮助。在此处阅读有关推荐和比较的更多信息:Microsoft Graph or Azure AD Graph
由于有关组的信息已经在 Microsoft Graph 的 v1 端点中可用(不是测试版),您应该使用 Microsoft Graph API。