Azure ad b2c Azure B2C广告:基于用户名的本地帐户身份提供商是否必须提供电子邮件地址?

Azure ad b2c Azure B2C广告:基于用户名的本地帐户身份提供商是否必须提供电子邮件地址?,azure-ad-b2c,Azure Ad B2c,我错过什么了吗?似乎不可能将其设置为在注册过程中不需要(甚至根本不提示输入)电子邮件地址?您只能禁用电子邮件验证 我们可能根本不允许用户输入电子邮件地址。他们必须只使用用户名注册。这当然必须得到支持吗 我已经按照我能找到的关于这个主题的所有文档,从头开始重做了两次整个过程。但结果仍然是一样的。我首先创建一个新的B2C租户,并确保在Identity Providers下,仅选择“用户名”作为“本地帐户”。然后我转到“注册或登录策略”,创建一个自定义模板,然后单击编辑。然后,我确保身份提供者仅设置为

我错过什么了吗?似乎不可能将其设置为在注册过程中不需要(甚至根本不提示输入)电子邮件地址?您只能禁用电子邮件验证

我们可能根本不允许用户输入电子邮件地址。他们必须只使用用户名注册。这当然必须得到支持吗

我已经按照我能找到的关于这个主题的所有文档,从头开始重做了两次整个过程。但结果仍然是一样的。我首先创建一个新的B2C租户,并确保在Identity Providers下,仅选择“用户名”作为“本地帐户”。然后我转到“注册或登录策略”,创建一个自定义模板,然后单击编辑。然后,我确保身份提供者仅设置为“用户ID注册”(和本地帐户),并且在注册属性以及应用程序声明中,我没有选择“电子邮件地址”。然后我进入“页面UI定制”并点击“本地帐户注册页面”。我输入我的自定义URL。在“注册属性”下列出“电子邮件地址”。电子邮件地址根本不应该在那里。当我点击电子邮件地址时,只有一个选项可以将“需要验证”设置为“否”。可选的切换开关被禁用。所以我甚至不能让它成为可选的

这里的要点是,当我使用“用户名”而不是“电子邮件”作为身份提供者时,它绝对不应该强迫我使用电子邮件地址


如果您在Azure门户网站上尝试上述步骤,我相信您会发现同样的限制。对我来说,这似乎是一个bug,可能是在某个地方出现了?

是的,可以使用自定义策略在B2C中注册用户,而无需电子邮件。 您可以按照上面提到的步骤创建自定义策略并下载,其中包含如何修改策略以满足您的需求的示例

下面是我用来注册用户的技术文件,没有强制性的电子邮件

 <TechnicalProfile Id="LocalAccountSignUpWithLogonName">
      <DisplayName>User ID signup</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
        <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
        <Item Key="LocalAccountType">Username</Item>
        <Item Key="LocalAccountProfile">true</Item>
        <Item Key="language.button_continue">Create</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
      </CryptographicKeys>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="signInName" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="objectId" Required="true" />
        <OutputClaim ClaimTypeReferenceId="signInName" Required="true" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
        <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
        <OutputClaim ClaimTypeReferenceId="jobTitle" />
        <OutputClaim ClaimTypeReferenceId="postalCode" />
        <OutputClaim ClaimTypeReferenceId="city" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surName" />
        <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
        <OutputClaim ClaimTypeReferenceId="newUser" />
        <OutputClaim ClaimTypeReferenceId="authenticationSource" />
        <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
      </OutputClaims>
      <ValidationTechnicalProfiles>
        <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonName" />
      </ValidationTechnicalProfiles>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
    </TechnicalProfile>

用户ID注册
IP地址
api.localaccountsignup
用户名
真的
创造

允许您在基于用户名的帐户或基于电子邮件的帐户之间进行选择的切换开关用于指示其中哪一个将用于登录。然而,这并不意味着在基于用户名的帐户中,电子邮件不会被收集-只是电子邮件不能用于登录

无论如何,即使对于基于用户名的帐户,也需要基本策略中的电子邮件地址来支持密码重置用户旅程。如果B2C没有收集电子邮件地址,那么即使用户忘记了密码,也无法重置密码


如果你真的不想收集电子邮件,那么你今天唯一的选择就是使用。在这种情况下,您必须确定如何支持密码重置(如果有的话)

嗨。例如,您需要一个用于重置密码的电子邮件地址。如果您查看用户旅程步骤和技术配置文件,您将看到电子邮件是必需的。当然,这在将来可能会发生变化。我建议您查看AAD B2C的uservoice门户。@MarceloP.DiIorio-MSFT我已经在uservoice网站上添加了一个想法:使用手机号码而不是电子邮件地址重置密码怎么样?目前还不支持手机号码。不过,它可以在将来添加。对于重置密码,您可以在注册期间收集电话号码,在密码重置策略中,您可以使用LocalAccountDiscoveryYusingLogonName技术配置文件下的
,然后将其与AAD UserReadingLogonName技术配置文件中的
进行比较。有关更多信息,请参阅