如何通过 /authorize?p=<POLICY> 获取 MS Graph 的 access_token 和 id_token
How to get access_token for MS Graph and id_token through /authorize?p=<POLICY>
我想要实现的很简单 - 让用户使用 Azure AD B2C 登录策略登录并获取 access_token
与 Microsoft Graph API 和 id_token
与私人通信 API。所有这些都将在单页应用程序中完成(使用 ReactJS)。
也许有一种方法可以从 AAD B2C id_token
获取 Microsoft Graph API access_token
?我可以毫无问题地检索 id_token
.
我已经查看了各种 MS Graph 场景,尝试了多种不同的登录方式 url,但最终总是遗漏一些东西(code
, token
, id_token
)
我为此使用的应用程序是在 apps.dev.microsoft.com 上创建的,但我不确定它是否已完全正确配置(并不是说有太多需要配置的东西)。
这里是 https://login.microsoftonline.com/{{tenant_id}}/v2.0/.well-known/openid-configuration?p={{policy}}
的输出,表明它不支持作为 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
或代码来检索它们的形式.../oauth2/v2.0/token?p={{policy}}...
提前致谢!
截至目前,您可以使用 OAuth2 for your own API 获得 id_token 和 access_token,但不能使用 MS Graph。
如果您有 SPA 应用程序,一种解决方法是将您自己的 API 公开给客户端,并且 API 可以在仅应用程序上下文中内部调用 MS Graph。也就是说,它将使用 MS Graph 中给定租户的仅应用程序凭据获取令牌,并能够查询任何用户。
这还可以让您公开更丰富的 API(例如,将目录中的用户属性与应用程序特定数据相结合),客户端应用程序可以将其用于各种查询和操作。
您可以 post 关于 access_token 到 feedback forums.
中 MS Graph 的现有想法或投票给现有想法(如果存在)
我想要实现的很简单 - 让用户使用 Azure AD B2C 登录策略登录并获取 access_token
与 Microsoft Graph API 和 id_token
与私人通信 API。所有这些都将在单页应用程序中完成(使用 ReactJS)。
也许有一种方法可以从 AAD B2C id_token
获取 Microsoft Graph API access_token
?我可以毫无问题地检索 id_token
.
我已经查看了各种 MS Graph 场景,尝试了多种不同的登录方式 url,但最终总是遗漏一些东西(code
, token
, id_token
)
我为此使用的应用程序是在 apps.dev.microsoft.com 上创建的,但我不确定它是否已完全正确配置(并不是说有太多需要配置的东西)。
这里是 https://login.microsoftonline.com/{{tenant_id}}/v2.0/.well-known/openid-configuration?p={{policy}}
的输出,表明它不支持作为 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
或代码来检索它们的形式.../oauth2/v2.0/token?p={{policy}}...
提前致谢!
截至目前,您可以使用 OAuth2 for your own API 获得 id_token 和 access_token,但不能使用 MS Graph。
如果您有 SPA 应用程序,一种解决方法是将您自己的 API 公开给客户端,并且 API 可以在仅应用程序上下文中内部调用 MS Graph。也就是说,它将使用 MS Graph 中给定租户的仅应用程序凭据获取令牌,并能够查询任何用户。
这还可以让您公开更丰富的 API(例如,将目录中的用户属性与应用程序特定数据相结合),客户端应用程序可以将其用于各种查询和操作。
您可以 post 关于 access_token 到 feedback forums.
中 MS Graph 的现有想法或投票给现有想法(如果存在)