我有 Azure Active Directory 1 (AD_1) 的 B2C 租户。我想对来自外部 AD_2 的用户进行身份验证。 SignUp_SignIn 流程是为 B2C 租户创建的,所有声明均已选择。此流程与具有后续设置的自定义开放 ID 提供程序相关,请参见下文:
在 AD_2 中我有应用程序注册,请参见下文
当我解码获得的令牌时,我看不到电子邮件值。我尝试了电子邮件字段的自定义 idp 的不同变体,例如
email
、sub
- 没有任何效果。我错过了什么吗?接下来是我的用户界面设置
我在 Azure AD 租户中注册了一个应用程序,并添加了相同的 API 权限,如下所示:
在令牌配置中,我为 ID 令牌添加了相同的可选声明,如下所示:
现在,我通过添加带有以下参数的自定义 IDP,将 Azure AD 配置为 B2C 租户中的身份提供商:
运行注册并登录用户流程时,请确保包含电子邮件地址声明,如下所示:
当我运行用户流程时,我看到下面的登录屏幕,其中包含 Custom IDP AAD 按钮:
单击自定义 IDP AAD 按钮后,我会在下面的屏幕上选择我选择的帐户
Sri
帐户:
就我而言,在使用来自 Azure AD 的声明完成身份验证过程后,我看到了以下屏幕:
当我选择
Continue时,我得到了id_token,并通过emails
在您的情况下,请确保在用户流程的
Application claims
中选择 电子邮件地址
,以在id_token 中获取电子邮件:
您需要在为电子邮件字段配置
自定义 IDP 时添加
email
作为值。
参考资料:
为 Azure AD 组织设置登录 - Azure AD B2C |微软
JWT 中缺少 Azure AD B2C“电子邮件”声明 - Stack Overflow,作者:Carl Zhu