如何通过/授权获取MS Graph和id_token的access_token?p = <policy>

时间:2017-08-22 17:33:14

标签: microsoft-graph azure-ad-b2c

我想要实现的目标非常简单 - 让用户使用Azure AD B2C登录策略登录并获取access_token以与Microsoft Graph API和id_token进行通信以与之通信私有API。所有这些都将在单页面应用程序中完成(使用ReactJS)。

也许有办法从AAD B2C access_token获取Microsoft Graph API的id_token?我可以毫无问题地检索id_token

我已经查看了各种MS Graph场景,尝试了如何构建登录网址的各种变化,但总是最终遗漏了某些内容(code,{{1 },token

我在此处使用的应用是在apps.dev.microsoft.com上创建的,但我不确定它是否已正确配置(并非配置太多)。< / p>

以下是id_token的输出,表示它不支持https://login.microsoftonline.com/{{tenant_id}}/v2.0/.well-known/openid-configuration?p={{policy}}的令牌(如果我从查询中删除该策略,那么它是允许的)< / p>

request_type

我想我想看到的答案是如何调用{ "issuer": "https:\/\/login.microsoftonline.com\/aaaaaaaa-aaaa-aaaaa-aaaa-aaaaaaaaaaaa\/v2.0\/", "authorization_endpoint": "https:\/\/login.microsoftonline.com\/{{tenant_id}}\/oauth2\/v2.0\/authorize?p={{policy}}", "token_endpoint": "https:\/\/login.microsoftonline.com\/{{tenant_id}}\/oauth2\/v2.0\/token?p={{policy}}", "end_session_endpoint": "https:\/\/login.microsoftonline.com\/{{tenant_id}}\/oauth2\/v2.0\/logout?p={{policy}}", "jwks_uri": "https:\/\/login.microsoftonline.com\/{{tenant_id}}\/discovery\/v2.0\/keys?p={{policy}}", "response_modes_supported": [ "query", "fragment", "form_post" ], "response_types_supported": [ "code", "id_token", "code id_token" ], "scopes_supported": [ "openid" ], "subject_types_supported": [ "pairwise" ], "id_token_signing_alg_values_supported": [ "RS256" ], "token_endpoint_auth_methods_supported": [ "client_secret_post" ], "claims_supported": [ "oid", "sub", "idp", "tfp" ] } 端点,该端点将提供https://login.microsoftonline.com/{{tenant_id}}/oauth2/v2.0/authorize?p={{policy}}&... + id_token或代码以从access_token检索它们{1}}

提前致谢!

1 个答案:

答案 0 :(得分:0)

截至目前,您可以使用OAuth2 for your own API获取id_token和access_token,但不能使用MS Graph。

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

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

您可以在feedback forums中向MS Graph发布关于access_token的现有建议(如果存在)的新想法或投票。