Azure AD B2C中如何在OrchestrationStep内实现页面跳转?
Azure AD B2C OrchestrationStep 跨页面跳转实现说明
基础能力边界
OrchestrationStep 本身不直接支持无约束的跨页面自由跳转,所有跳转交互需要在自定义策略的前端权限、内容安全规则框架内实现,脱离配置规则的裸JS操作会触发框架的默认重定向逻辑。
为什么单纯写location.assign会跳转到jwt.ms
之前遇到的跳转异常是三层规则共同作用的结果:
- B2C自定义策略页面默认拦截所有前端跳转请求,自动将跳转行为包装为对认证端点的表单提交
- 未在策略中开启JS权限、配置跳转域名白名单时,框架无法识别该跳转为合法业务操作,会回退到默认测试端点(jwt.ms)完成流程收尾
- CTA按钮没有拦截默认的表单提交行为,跳转逻辑被框架的全局事件捕获规则抢先触发

可落地的实现步骤
- 开启对应内容定义的JS执行权限
定位到当前CTA页面绑定的ContentDefinition配置节点,在节点的<Metadata>块中添加两项配置:- 设置
UnifiedJs为true,启用B2C统一JS运行时 - 设置
ManualInterception为false,关闭框架对按钮点击、跳转事件的全局默认拦截
- 设置
- 配置跳转域名的CSP白名单
在当前页面的安全策略配置块中,将目标跳转的业务域名加入内容安全策略的放行列表,避免浏览器、框架双重拦截跳转请求 - 调整前端CTA的事件绑定逻辑
给按钮点击事件增加默认行为拦截,再执行跳转操作,示例代码:// 获取页面末尾的CTA按钮元素 const ctaBtn = document.querySelector('#page-end-cta'); ctaBtn.addEventListener('click', (event) => { // 阻止按钮默认触发的认证表单提交流程 event.preventDefault(); // 执行已在白名单内的目标地址跳转 window.location.replace('目标跳转页面地址'); }) - 校验跳转逻辑的流程位置
若目标跳转地址为无需经过认证流程的外部页面,需将CTA入口放置在认证流程最起始、无前置身份校验要求的编排步骤中,避免流程状态不匹配触发框架自动重定向
内容的提问来源于stack exchange,提问作者Reni Dantas
相关产品推荐
相关产品推荐

