一、问题描述
项目环境:2.10版本分布式零信任(基础环境泛域名已配置完成),CAS为友商X捷统一认证平台
项目问题:友商CAS认证页面存在微信二维码登录功能,在CAS认证页面经过零信任免认证代理后无法正常获取二维码,其他功能正常。
二、告警信息
通过F12查看加载流程确认,二维码报错为redirect_uri参数错误。
三、根因
file:///C:/Users/luoxue/AppData/Local/Temp/ksohtml31852/wps2.jpg
问题原因为在微信开发平台中填写的redirect_uri为sso.xxx.edu.cn,在经过零信任代理后redirect_uri变为泛域名格式sso-xxx-edu-cn-s.vpn.xxx.edu.cn:8118导致微信redirect_uri校验参数错误。
四、处理过程
预想三种方案解决(每种方案初始环境均为SSO认证由aTrust代理访问。)
方案一:将微信开发这平台redirect_uri改为泛域名格式
弊端:经过讨论网页redirect_uri有JS脚本自动获取当前网页拼接而成,会影响内网使用。
方案二:sso认证页面互联网可直接访问,将sso认证页面放弃通过atrust代理可实现网页自动生成redirect_uri与微信开发平台配置redirect_uri一致。
弊端:登录atrust使用认证域名为sso.xxx.edu.cn,登录aTrust后访问泛域名资源触发票据校验的SSO域名为泛域名sso-xxx-edu-cn-s.vpn.xxx.edu.cn,会导致登录atrust生成的票据无法被应用获取,从而触发第二次认证页面。
方案三:根据aTrust泛域名代理原理得知,客户端发起泛域名请求,将数据包发送至代理网关,由代理网关将泛域名转换为真实应用地址并访问应用。因此,采用将微信验证域名强制通过免认证应用由代理网段代理访问是微信开发者平台获取到的域名问sso.xxx.edu.cn实现redirect_uri一致。
五、解决方案
1.新增免认证应用https://open.weixin.qq.com强制将访问微信开发平台数据经过代理网关代理解决
附: