“当前已有100+用户参与分享,共计发放奖励60000+“
一、 问题描述 某客户网络拓扑如下图所示:需要通过HTTP单点登录使客户不需要在AC上重复认证。
二、告警信息/故障现象 部分用户单点登录失败,显示不需要认证上线。
三、处理排查过程 1. 检查设备认证策略配置正常,单点登录失败不需要认证上线。 2. 检查HTTP单点登录配置,配置正确。 3. 检查AC和第三方服务器连通性,确认正常。 4. 后台抓取第三方服务器的IP的端口85的数据包分析HTTP单点登录报文,发现有数据包传输过来。 5. 分析数据包,先解析URL加密,再解析base64加密,得到用户名和IP。 6. 通过抓取测试IP的HTTP单点登录数据包,来确认是否上线数据都传输到AC设备,检查发现服务器并未发送测试IP数据到AC设备,客户修复服务器异常后上线成功。
四、故障分析结论 由于第三方服务器未正常发送用户数据包,导致部分用户可以单点登录上线,部分用户以不需要认证上线。
五、解决方案 1. sangfor 设备提供的 HTTP 单点登录接口,可以向任何第三方认证设备(如城市热点等计费系统)提供基于 HTTP(S)协议 GET 方法的单点登录/注销功能。为了在 sangfor设备上实现单点登录与注销,第二方设备需提供用户名、IP 地址,组名,其中组名是可选的。 2. HTTP单点登录报文加密函数sendToAc原理: 1)对用户名,用户 IP 地址,组名进行 utf-8 编码; 2)对 1 的结果进行 base64 编码; 3)然后对 2 进行 URL 编码; 4)然后与 acip,opr 形成 url,调用 jquery 的 get 方法发送 HTTP GET请求 "http://+acip+〃:85/cgi-bin/caauth.cgi?ui=web&opr="+opr+"&chk_cookie=0&info=$ {codedlnfo}" ; ${codedInfo}为用户名,用户 IP 地址,组名经过 1,2,3 步 的结果 3. 根据报文原理进行解密,校验发送的用户名和IP地址是否正确。
六、建议与总结 1. 处理单点登录认证问题,一定要结合原理排查,结合原理找出问题点在数据交互的哪一段上。 2. 解密网址: 3. 以下四种单点登录,都是通过第三方服务器发送上线用户的用户名和IP给AC设备来上线,基本配置无误时,都可以在AC设备上抓包来排查 HTTP单点登录:端口号85 城市热点单点登录:端口号61440 H3C IMC单点登录:端口号61442 某公司转发单点登录:端口号1773或1775,根据设备版本不同使用不同的端口 |