我想要实现的目标非常简单 - 让用户使用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}}
提前致谢!
答案 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的现有建议(如果存在)的新想法或投票。