我已经设置了一个Azure AD B2C服务来注册/登录我的用户,并使用了第三方身份提供商Google和Microsoft。成功登录后,我得到idp_access_token 从B2C服务回来。我可以使用此令牌直接连接到谷歌和微软 API 吗? 如 Azure 文档所述,此令牌由标识提供者颁发,并由 B2C 服务作为声明返回。但idp_access_token似乎不是有效的访问令牌,并且不包含任何声明。
要获得有效的"idp_access_token",请检查您是否必须在 OpenId 身份提供程序配置的元网址中设置"v2.0":
https://xxx.b2clogin.com/xxxx.onmicrosoft.com/v2.0/.well-known/openid-configuration
我们可能无法编辑已经创建的 metadeta 网址。因此,请尝试在元网址中使用"v2.0"创建一个新的。
当用户使用标识提供者(如谷歌或 Facebook)登录时,应用会获取在 Azure AD B2C 令牌中传递的标识提供者的访问令牌。此idp_access_token可用于调用身份提供商的API,例如Facebook Graph API,即;Usually the embedded IdP access token is used to call the services that the IdP hosts
.有关详细信息,请参阅通过用户流将访问令牌传递到 Azure Active Directory B2C 中的应用程序。
参考:techcommunity.microsoft.com 博客
注:
- Azure AD B2C支持传递
OAuth 2.0 identity providers
的访问令牌,其中包括Facebook和Google。For all other identity providers, the claim is returned blank.
- 即使声明idp_access_token是有效的 JWT,也不能用于访问 Microsoft Graph 或其他范围。像往常一样 嵌入式 IdP 访问令牌用于调用 IdP 的服务 主机。但Microsoft图形数据托管在 Azure AD 中,而不是托管在 Microsoft帐户端。
您可以查看此Microsoft文档,以使用Azure Active Directory B2C设置使用Facebook帐户或使用Azure Active Directory B2C的Google帐户进行注册和登录。
引用:
- 使用 Azure B2C 登录名访问 Microsoft 图形是社交登录Microsoft帐户