Microsoft graph api 如何通过/authorize获取MS Graph和id令牌的访问令牌?p=<;政策>;

Microsoft graph api 如何通过/authorize获取MS Graph和id令牌的访问令牌?p=<;政策>;,microsoft-graph-api,azure-ad-b2c,Microsoft Graph Api,Azure Ad B2c,我想要实现的非常简单-让用户使用Azure AD B2C登录策略登录,并获取一个access\u令牌与Microsoft Graph API通信,以及一个id\u令牌与私有API通信。所有这些都将在一个单页应用程序中完成(使用ReactJS) 也许有一种方法可以从AAD B2Cid\u令牌获取Microsoft Graph API的access\u令牌?我可以毫无问题地检索id\u令牌 我已经研究了各种MS Graph场景,尝试了大量不同的方法来构建登录url,但最终总是缺少一些东西(code,

我想要实现的非常简单-让用户使用Azure AD B2C登录策略登录,并获取一个
access\u令牌
与Microsoft Graph API通信,以及一个
id\u令牌
与私有API通信。所有这些都将在一个单页应用程序中完成(使用ReactJS)

也许有一种方法可以从AAD B2C
id\u令牌
获取Microsoft Graph API的
access\u令牌
?我可以毫无问题地检索
id\u令牌

我已经研究了各种MS Graph场景,尝试了大量不同的方法来构建登录url,但最终总是缺少一些东西(
code
token
id\u token

我用于此目的的应用程序是在apps.dev.microsoft.com上创建的,但我不确定它是否完全正确配置(没有太多需要配置的内容)

这是
https://login.microsoftonline.com/{{tenant_id}}/v2.0/.well-known/openid配置?p={{policy}}
表示它不支持将令牌作为
请求类型
(如果我从查询中删除策略,那么它是允许的)

{
“发卡机构”:“https:\/\/login.microsoftonline.com\/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa\/v2.0\/”,
“授权端点”:“https:\/\/login.microsoftonline.com\/{{tenant\u id}}\/oauth2\/v2.0\/authorize?p={{policy}”,
“token\u endpoint”:“https:\/\/login.microsoftonline.com\/{{tenant\u id}}\/oauth2\/v2.0\/token?p={{policy}”,
“结束会话端点”:“https:\/\/login.microsoftonline.com\/{{tenant\u id}}\/oauth2\/v2.0\/logout?p={policy}”,
“jwks\u uri”:“https:\/\/login.microsoftonline.com\/{{tenant\u id}}\/discovery\/v2.0\/keys?p={{policy}”,
“支持的响应模式”:[
“查询”,
“碎片”,
“表格邮政”
],
“支持的响应类型”:[
“代码”,
“id_令牌”,
“代码id_令牌”
],
“支持的范围”:[
“openid”
],
“受支持的主题类型”:[
“成对”
],
“支持的id\u令牌\u签名\u alg\u值”:[
“RS256”
],
“支持令牌\端点\身份验证\方法”:[
“客户秘密帖子”
],
“支持的索赔”:[
“oid”,
“子”,
“国内流离失所者”,
“全要素生产率”
]
}
我想我希望看到的答案是我如何调用
https://login.microsoftonline.com/{{tenant\u id}/oauth2/v2.0/authorize?p={{policy}}&…
端点,它将提供
id\u令牌
+
access\u令牌
或从
../oauth2/v2.0/token?p={policy}…


提前谢谢

到目前为止,您可以使用MS Graph获取id_令牌和access_令牌,但不能使用MS Graph

如果您有一个SPA应用程序,一个解决方法是向客户机公开您自己的API,并且该API可以在仅应用程序上下文中内部调用MS Graph。也就是说,它将使用MS Graph中给定租户的仅应用程序凭据获取令牌,并能够查询任何用户

这还可以使您公开更丰富的API(例如,将目录中的用户属性与特定于应用程序的数据相结合),客户端应用程序可以使用该API进行各种查询和操作


您可以在中发布有关MS图形访问令牌的新想法或投票给现有想法(如果存在)。

现在,您可以使用但不使用MS图形获得id令牌和访问令牌

如果您有一个SPA应用程序,一个解决方法是向客户机公开您自己的API,并且该API可以在仅应用程序上下文中内部调用MS Graph。也就是说,它将使用MS Graph中给定租户的仅应用程序凭据获取令牌,并能够查询任何用户

这还可以使您公开更丰富的API(例如,将目录中的用户属性与特定于应用程序的数据相结合),客户端应用程序可以使用该API进行各种查询和操作


关于MS图形的访问令牌,您可以在中发布新想法或投票给现有想法(如果存在)。

您好,感谢您的回复,这是我们或多或少的想法。我们在开发的API中创建了一个微服务,它公开了所需的Microsoft Graph API,并基本上转发了请求。您好,感谢您的回复,我们或多或少都是这样做的。我们在开发的API中创建了一个微服务,它公开所需的Microsoft Graph API,并基本上转发请求。