在联合 Azure AD B2C 注册自定义策略流上获取 UPN 的问题

Issue with getting UPN on a federated Azure AD B2C sign-up custom policy flow

如果我使用内置注册策略将 Azure AD 作为 IDP 添加到 B2C 并使用现有 Azure AD 用户注册(即联合),则 B2C 上的“占位符”来源为“联合 Azure Active Directory”。注册用户有一个 UPN。

我似乎无法使用该用户名使用自定义登录策略登录 B2C?

它说“帐户不存在。请注册”。我假设您不能混合搭配内置和自定义?

我必须使用自定义策略进行注册和登录才能使登录正常工作。

在这种情况下,“占位符”的来源是“其他”。

问题是这个注册用户没有 UPN。

有没有办法获取 UPN?

或者这是设计使然?

原因是,用户流中使用的 Issuer 与自定义策略不同。

如果您 return 通过 MS Graph(测试版)访问用户,请比较通过自定义策略注册的用户的身份数组与用户流(对于 AAD)。发行人将不同(login.microsoftonline.com 与 sts.windows.net)。 Issuer 和 AAD objectId 的组合用于创建和定位用户。 由于不匹配,使用用户流通过 AAD 联合注册的用户无法通过自定义策略登录,将找不到帐户。

通过分析用户的 Identities 对象,您可以在使用用户流创建的帐户上获取 Issuer 属性 的值,并将其插入到您的 AAD 自定义策略技术配置文件中,用于名为“身份提供者”。

改变这个

<OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />

<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue=“ISSUER FROM USER FLOW USER” />

https://docs.microsoft.com/en-us/azure/active-directory-b2c/identity-provider-azure-ad-single-tenant?pivots=b2c-custom-policy#configure-azure-ad-as-an-identity-provider-1