0

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

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

关于如何实现这一点的任何建议?

谢谢桑杰

4

1 回答 1

0

我不确定是否可以捕获 url,但它很容易使用claims transformations声明 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>
于 2019-12-20T20:30:42.153 回答