在Azure B2C自定义策略中的CombinedSignInAndSignUp页面上捕获策略URL

时间:2019-12-19 01:21:36

标签: azure-ad-b2c identity-experience-framework

我正在尝试在用户登陆第一页时捕获Azure B2C自定义策略的URL。这是CombinedSignInAndSignUp编排步骤(第一个组合的注册/登录页面)。我想在用户使用过程的稍后阶段使用此URL。 如果出现任何错误并且无法继续进行旅程,我会显示带有自定义消息的弹出窗口的想法。 Microsoft当前的建议是,它引发一个错误,后端应用程序应处理该错误并采取适当的措施(例如在“忘记密码”链接的情况下)。我要处理这种情况稍有不同,因为我希望向用户显示此消息并重定向回该策略(注册或重置密码)。

我尝试在CombinedSignInAndSignUp步骤上设置额外的输入控件,但似乎不支持该操作,它仅显示用户名和密码控件。我的想法是(通过JavaScript)捕获当前url,将其存储在输入控件(声明)中,并在旅途中继续使用,并在需要时使用它以将用户重定向到该策略。

关于如何实现此目标的任何建议?

谢谢 桑杰

1 个答案:

答案 0 :(得分:0)

我不确定是否可以捕获该URL,但是可以很容易地使用claims transformationsclaim resolver来构造它。

以下将是策略URL的格式,其中提到了所有声明解析器。您将需要进行声明转换以格式化最终URL。     https:// {Policy:RelyingPartyTenantId} .b2clogin.com / {Policy:RelyingPartyTenantId} .onmicrosoft.com / oauth2 / v2.0 / authorize?p = {Policy:PolicyId}&client_id = {OIDC:ClientId}&nonce = {OIDC :Nonce}&redirect_uri = https%3A%2F%2Fjwt.ms&scope {OIDC:scope}&response_type = id_token&prompt = {OIDC:Prompt}&ui_locales = {Culture:LanguageName}

有两个变量目前在自定义策略中不可用,它们是声明解析器-redirect_uri和responseType。对于他们来说,您有两种选择 -对它们进行硬编码 -将它们复制到策略URL的其他查询字符串参数中,然后将其提取为声明解析器。 B2C具有声明解析器,它可以从查询字符串参数中获取值,这称为{OAUTH-KV}声明解析器。查询字符串参数testReplyUrl的示例。

 <OutputClaim ClaimTypeReferenceId="replyUrl" DefaultValue="{OAUTH-KV:testReplyUrl}" AlwaysUseDefaultValue="true" />

<BuildingBlocks>
    <ClaimsSchema>
      <ClaimType Id="replyUrl">
        <DisplayName>redirect uri</DisplayName>
        <DataType>string</DataType>
        <AdminHelpText>Reply url</AdminHelpText>
        <UserHelpText>ReplyUrl.</UserHelpText>
      </ClaimType>
    </ClaimsSchema>
  </BuildingBlocks>