【问题标题】:Using ADB2C phone factor technical profile to validate a phone number before creating an account在创建帐户之前使用 ADB2C 电话因素技术配置文件来验证电话号码
【发布时间】:2020-05-13 01:01:33
【问题描述】:

我正在尝试创建一个自定义 ADB2C 策略,该策略应该遵循诸如...的旅程

  1. 用户输入电话号码进行验证
  2. 用户收到验证号码的代码并在视图中输入此代码
  3. 已设置声明,在下一步中使用该声明保存到 AD。

我可以看到我需要根据 Microsoft 文档使用电话因素技术配置文件,但我看不出这是否可以在用户注册之前完成,因为它似乎想要一个 UserID 作为输入声明(见Input claims required)。所有样本似乎都指向已与用户关联的 MFA 和编辑手机。

可以这样做吗?

其次,在此流程中混合一次性密码技术配置文件是否有任何价值,还是仅用于 OTP 代码生成(不发送和接受来自用户的输入)?

更新

所以我设法创建了正确显示 UI 的用户旅程,因此我似乎可以输入电话号码,但现在当我提交它时,我收到错误“AADB2C90154:多因素验证请求未能获得会话 ID”来自服务。”

据我所知,会话技术配置文件很好,所以不确定问题可能是什么?

我也尝试禁用会话,但似乎电话技术配置文件需要它?

技术简介示例

<TechnicalProfile Id="PhoneFactor-InputOrVerify">
                <DisplayName>PhoneFactor</DisplayName>
                <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.PhoneFactorProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
                <Metadata>
                    <Item Key="ContentDefinitionReferenceId">api.phonefactor</Item>
                    <Item Key="ManualPhoneNumberEntryAllowed">true</Item>
                    <Item Key="setting.authenticationMode">sms</Item>
                    <Item Key="setting.autodial">true</Item>
                </Metadata>
                <CryptographicKeys>
                    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
                </CryptographicKeys>
                <InputClaims>
                    <InputClaim ClaimTypeReferenceId="userIdForMFA" PartnerClaimType="UserId" DefaultValue="TEST" />
                    <InputClaim ClaimTypeReferenceId="phoneNumber" />
                </InputClaims>
                <OutputClaims>
                    <OutputClaim ClaimTypeReferenceId="verifiedPhone" PartnerClaimType="Verified.OfficePhone" />
                    <OutputClaim ClaimTypeReferenceId="newVerifiedPhone" PartnerClaimType="newPhoneNumberEntered" />
                </OutputClaims>
            </TechnicalProfile>

【问题讨论】:

  • 另外,有没有关于实际发送短信/电话的费用信息?我在 Azure 网站上没有看到任何提及?
  • 定价可以在这里找到:azure.microsoft.com/en-us/pricing/details/active-directory-b2c它表示MFA和SMS事件是0.03美元/事件。
  • 关于您的自定义流程。您是否希望用户仅使用电话号码注册?
  • 不,注册将使用电子邮件和密码,但我们需要确认电话号码,因此使用“使用电话号码登录”策略不是我们需要的路线(目前)
  • 好的。那么 MFA 设置是在用户输入他们的电子邮件地址之前还是之后发生的?

标签: azure-active-directory azure-ad-b2c


【解决方案1】:

@Raj,

除了默认值之外,我没有看到您如何设置 userIdForMFA?但是,Azure 文档在这里不是很清楚。尝试使用设置 userId 值的 inputClaimsTransformation。

例如: 将此添加到 MFA 技术简介:

      <InputClaimsTransformations>
        <InputClaimsTransformation ReferenceId="CreateUserIdForMFA2" />
      </InputClaimsTransformations>

将此添加到您的声明转换中:

  <ClaimsTransformation Id="CreateUserIdForMFA2" TransformationMethod="CreateStringClaim">
    <InputParameters>
      <InputParameter Id="value" DataType="string" Value="test12345@{YourTenant}.onmicrosoft.com"/>
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="userIdForMFA" TransformationClaimType="createdClaim" />
    </OutputClaims>
  </ClaimsTransformation>  

【讨论】:

猜你喜欢
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
相关资源
最近更新 更多