填充 Azure AD B2C Orchestration 中的电子邮件地址文本框

2023-12-11

我正在使用自定义策略来执行一些用户旅程并使用MFA 的社交和本地帐户。在其中一个步骤中,我询问用户他们的电子邮件地址

我正在使用“LocalAccountDiscoveryUsingEmailAddress”在第一个屏幕上获取他们的电子邮件地址。然后,根据他们是否注册了 MFA,他们将被发送到移动 OTP 屏幕或发送到邮件地址 OTP 屏幕。

现在发生的情况是,在他们输入电子邮件地址并按确定(并且他们被发送到 emial OTP 屏幕)后,他们会再次出现另一个屏幕,以再次输入他们的电子邮件地址以进行验证。我在这里寻找两种可能性

1) (首选)他们会立即收到一封电子邮件 OTP - 因此他们不必输入电子邮件地址,然后单击“验证 emial”来发送 OTP

Or

2) 他们的电子邮件地址已填充在屏幕中,因此他们不必再次输入,因此他们所要做的就是单击“验证电子邮件”按钮。

我的用户旅程看起来像

   <UserJourney Id="PasswordReset">
      <OrchestrationSteps>
        <OrchestrationStep Order="1" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="PasswordResetUsingEmailAddress" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingEmailAddress" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="2" Type="ClaimsExchange">
          <Preconditions>
            <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
              <Value>strongAuthenticationPhoneNumber</Value>
              <Action>SkipThisOrchestrationStep</Action>
            </Precondition>           
          </Preconditions>  
          <ClaimsExchanges>
            <ClaimsExchange Id="PasswordResetUsingEmailAddressExchange" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingEmailAddressOTP" />
          </ClaimsExchanges>
        </OrchestrationStep>        
        <OrchestrationStep Order="3" Type="ClaimsExchange">
          <Preconditions>
            <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
              <Value>strongAuthenticationPhoneNumber</Value>
              <Action>SkipThisOrchestrationStep</Action>
            </Precondition>           
          </Preconditions>  
          <ClaimsExchanges>
            <ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="4" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="NewCredentials" TechnicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
      </OrchestrationSteps>
      <ClientDefinition ReferenceId="DefaultWeb" />
    </UserJourney>

首先,对于#2,您可以实现一个技术配置文件,该配置文件接受电子邮件地址作为输入声明,以便将其预先填充在自声明页面中,例如:

<TechnicalProfile Id="SelfAsserted-LocalAccount-EmailVerification">
  <DisplayName>Local Account Email Address Verification</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ContentDefinitionReferenceId">api.localaccount.emailverification</Item>
    <Item Key="EnforceEmailVerification">true</Item>
  </Metadata>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateReadonlyEmailClaim" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="readonlyEmail" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="readonlyEmail" PartnerClaimType="verified.email" Required="true" />
  </OutputClaims>
</TechnicalProfile>

此技术配置文件指的是只读电子邮件地址,因此最终用户无法更改用于 OTP 验证的电子邮件地址。

The CreateReadonlyEmailClaim权利要求变换定义为:

<ClaimsTransformation Id="CreateReadonlyEmailClaim" TransformationMethod="FormatStringClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormat" DataType="string" Value="{0}" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="readonlyEmail" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

The readonlyEmail声明类型声明为:

<ClaimType Id="readonlyEmail">
  <DisplayName>E-mail Address</DisplayName>
  <DataType>string</DataType>
  <UserInputType>Readonly</UserInputType>
</ClaimType>

对于 #1,您可以实现上述更改,并在自定义页面 UI 中实现 JavaScript 函数来“单击”验证邮件按钮启动 OTP 验证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

填充 Azure AD B2C Orchestration 中的电子邮件地址文本框 的相关文章

随机推荐

  • CouchDB 和 PouchDB 之间的过滤同步

    我目前正在考虑在我想编写的下一个应用程序中使用 CouchDB 2 和 PouchDB 7 基本上 我将在中央存储中拥有一个 CouchDB Web 客户端和移动应用程序将启动一个能够思考的 PouchDB 基本上这就像一个魅力 但是 如果
  • 为什么 python 像这样排序我的字典? [复制]

    这个问题在这里已经有答案了 这是我有的字典 propertyList id int name char 40 team int realOwner int x int y int description char 255 port bool
  • 浮点数的正则表达式?

    我正在尝试编写一个正则表达式来验证浮点数 这是我迄今为止所做的 1 9 d 0 2 d 1 1 如果满足以下条件 则该号码有效 要么是正的 要么是负的 最多 2 位数字 十位或百位 百位数字不能为0 只能是1 9 比例最大为 1 小数值可以
  • StackOverflowException 未处理

    我的代码中出现此错误 MedCareProviderLibrary dll 中发生 System StackOverflowException 类型的未处理异常 这是我的代码片段以及错误的来源 它在有错误的部分上显示一个黄色箭头 显示错误的
  • 在 Matlab 中查找 pcolor 中的轮廓/边缘

    我正在尝试制作一个遵循 像素 边缘的轮廓pcolor在 Matlab 中绘图 这可能在图片中得到最好的解释 这是我的数据图 黄色数据 data 1 和蓝色数据 data 0 之间有明显的界限 请注意 这是一个pcolor绘图 因此每个 正方
  • 从 for 循环到 Java 8 Stream 示例

    我想要一个 Java 8 的简单示例Streams去理解它 我有这个代码可以返回免费出租车 我想用使用 Java 8 流的等效代码替换这个 for 循环 private List
  • PHP 根据由括号分隔的字符串中的键名称创建多维关联数组

    我有一个字符串 括号中包含可变数量的键名称 例如 str key subkey otherkey 我需要创建一个多维数组 该数组具有字符串中表示的相同键 value只是一个在这里不重要的字符串值 arr key gt subkey gt o
  • 无法导入 anaconda 中安装的包

    I have a simple question I have install resampy using anaconda conda install c conda forge resampy 现在 当我将 resampy 导入到我的
  • 采用整数并返回所有可能的加法格式的算法

    我需要编写一个算法 它接受一个整数并返回所有可能的加法格式 e g 如果我输入 6 它将返回以下字符串 0 6 6 1 1 1 1 1 1 6 1 1 1 1 2 6 1 1 1 3 6 1 1 4 6 1 5 6 2 1 1 1 1 6
  • 如何获取目录的父目录

    如何获取目录的父目录 File parent new File System out println Parent directory parent getParent prints Parent directory null 我有一个 M
  • 绕过 500 行限制

    我编写了一个我很满意的 Google Fusion Tables 脚本 如下 但它只在我的表中加载 500 行点 该表有 20 000 多行 这是我第一次来到这个社区 我真的很惊讶地发现了极限 有什么方法可以加载所有行吗
  • 计算 Pandas 中值的数量[重复]

    这个问题在这里已经有答案了 我有一个 Pandas 数据框 如下构建 Col1 Col2 1 A 1 B 1 B 2 A 2 A 3 A 3 Nan 对于 Col1 的每个值 我想计算 Col2 的每个值 忽略 Nan 值 并将总和放入关联
  • 为什么可浏览属性使属性不可绑定?

    我正在尝试使用System Windows Forms PropertyGrid 要使属性在此网格中不可见 应使用BrowsableAttribute set to false 但添加此属性会使该属性不可绑定 Example 创建一个新的
  • 操作方法:Grails 3.0.2 + Oracle Database 12c?

    我正在使用 Grails 迈出第一步 并尝试使用 Oracle Database 12c 创建一个 hello world 应用程序 不幸的是 www grails org 上有关数据库特定部分的教程文档似乎并不那么全面 例如 与我使用了几
  • 没有可编译的体系结构(ARCHS=、VALID_ARCHS=armv7 armv7s)

    我使用的是 Xcode 4 5 2 并且有一个无法为运行 iOS 6 0 1 的 iPhone 编译的项目 尽管其他项目使用相同的设置可以正常编译 如下图所示 关于如何解决这个问题有什么想法吗 您可能正在使用一些尚不支持armv7s架构的第
  • 如何从 JavaScript 函数调用 PHP 类方法 [重复]

    这个问题在这里已经有答案了 可能的重复 从 javascript 调用 php 函数 我知道php是服务器端 JavaScript是客户端 但我想知道如何在调用 JavaScript 函数时运行 PHP 方法 下面是我的代码 我知道错误是
  • 将事件/命令与 XamlReader 结合使用

    我正在使用 XamlReader Parse string 动态构建我的数据模板 我遇到的问题是我无法在使用 XamlReader 创建的任何控件上放置任何事件 在网上做了一些研究后 我了解到这是 XamlReader 的一个已知限制 我对
  • 仅当页面位于 React Router Dom 的站点内时,如何返回一页?

    我想创建一个 返回 按钮 如果该页面位于网站内 则该按钮仅返回一页 我试过以下这个答案添加返回按钮 import useNavigate from react router dom function YourApp const naviga
  • pcap_lookupnet 返回错误的 IP 地址

    以下 libpcap 文档中的示例代码生成以下代码 该代码应报告给定接口的 IP 地址 本例中为 eth0 为简洁起见 省略错误检查 include
  • 填充 Azure AD B2C Orchestration 中的电子邮件地址文本框

    我正在使用自定义策略来执行一些用户旅程并使用MFA 的社交和本地帐户 在其中一个步骤中 我询问用户他们的电子邮件地址 我正在使用 LocalAccountDiscoveryUsingEmailAddress 在第一个屏幕上获取他们的电子邮件