我目前正在使用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?
用户登录后,有没有更简便的方法?
答案 0 :(得分:1)
用户为多个组的成员时的超额指示器声明
作为有问题的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端点中提供(不是beta),因此您应该使用Microsoft Graph API。