Azure AD B2C自定义UI动态LoadUri默认容器配置问题咨询
Azure AD B2C 自定义UI动态LoadUri默认值配置解决方案
你遇到的双斜杠问题是因为未传入containerName参数时,{oauth-kv:containerName}占位符会被替换为空字符串,直接拼接在路径中就产生了无效的双斜杠,可通过以下两种方案解决:
方案1:自定义策略内配置声明默认值(推荐)
这是最符合B2C自定义策略规范的实现方式,无需额外依赖外部服务配置:
- 第一步:在扩展策略的
<ClaimsSchema>节点中添加containerName声明定义(未定义过才需要加):
<ClaimType Id="containerName"> <DisplayName>Storage container name for custom UI</DisplayName> <DataType>string</DataType> <DefaultValue>default</DefaultValue> </ClaimType>
- 第二步:添加声明转换规则,确保参数缺失时自动填充默认值,在
<ClaimsTransformations>节点下新增:
<ClaimsTransformation Id="SetDefaultContainerName" TransformationMethod="SetClaimIfClaimIsNull"> <InputClaims> <InputClaim ClaimTypeReferenceId="containerName" /> </InputClaims> <InputParameters> <InputParameter Id="defaultValue" DataType="string" Value="default" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="containerName" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>
- 第三步:将该声明转换添加到用户旅程首个编排步骤的前置处理中,确保在加载自定义UI之前就完成默认值填充:
找到你的用户旅程对应的<OrchestrationStep Order="1" ...>节点,在其中添加:
<Preconditions> <!-- 原有前置条件保留即可 --> </Preconditions> <ClaimsExchangeSelections> <!-- 原有配置保留即可 --> </ClaimsExchangeSelections> <!-- 新增以下声明转换配置 --> <ClaimsTransformations> <ClaimsTransformation ReferenceId="SetDefaultContainerName" /> </ClaimsTransformations>
配置完成后,无论是否传入containerName参数,占位符都会有有效值,不会再出现双斜杠问题。
方案2:存储账户配置URL重写(临时兼容方案)
如果暂时不想修改自定义策略,可以在存储账户的CDN或者静态网站规则中配置重写规则:
- 匹配请求路径规则:
/templates//customize-ui.html - 重写目标路径:
/templates/default/customize-ui.html - 重写类型选择永久重定向(301)或者临时重定向(302)即可
该方案适合临时修复,长期使用更推荐方案1,逻辑更清晰可控。
内容的提问来源于stack exchange,提问作者h8tow8
相关产品推荐
相关产品推荐

