我正在尝试在用户登陆第一页时捕获Azure B2C自定义策略的URL。这是CombinedSignInAndSignUp编排步骤(第一个组合的注册/登录页面)。我想在用户使用过程的稍后阶段使用此URL。 如果出现任何错误并且无法继续进行旅程,我会显示带有自定义消息的弹出窗口的想法。 Microsoft当前的建议是,它引发一个错误,后端应用程序应处理该错误并采取适当的措施(例如在“忘记密码”链接的情况下)。我要处理这种情况稍有不同,因为我希望向用户显示此消息并重定向回该策略(注册或重置密码)。
我尝试在CombinedSignInAndSignUp步骤上设置额外的输入控件,但似乎不支持该操作,它仅显示用户名和密码控件。我的想法是(通过JavaScript)捕获当前url,将其存储在输入控件(声明)中,并在旅途中继续使用,并在需要时使用它以将用户重定向到该策略。
关于如何实现此目标的任何建议?
谢谢 桑杰
答案 0 :(得分:0)
我不确定是否可以捕获该URL,但是可以很容易地使用claims transformations
和claim 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>