新同事第一天上班,公司内部系统点sso登录后一直转圈,最后提示认证失败请重试,换了浏览器还是不行。SSO是单点登录,链条上任何一环出问题都表现为登录失败,得按顺序排查。

先分清是哪一层故障

SSO流程大概是:应用把用户跳转到身份提供方,身份方认证后发一个票据或令牌,应用再拿票据去校验。失败点可能在跳转、在令牌校验,也可能在本地会话。看浏览器地址栏停在哪个域名,就能判断卡在哪一步。

客户端侧先做这几件事

  • 清Cookie和缓存:SSO依赖会话Cookie,旧的没清干净会导致票据对不上,开无痕窗口最省事。
  • 校准时间:令牌有效期依赖时间,电脑时间偏差超过几分钟,校验必然失败,同步一下系统时间。
  • 换网络:公司内网走的是内部身份服务,在家用外网可能没开外网入口。
  • 关扩展:密码管理器和广告拦截插件常拦截跳转,先临时全禁一次排查。

浏览器插件和扩展的干扰

有些密码管理器、企业安全插件会改写跳转请求,把本该发往身份方的地址换掉,表现为点了登录没反应。广告拦截插件拦掉认证域名的Cookie写入也一样会失败。临时禁用全部扩展再试,能很快排除这一层。

服务端常见配置问题

回调地址和身份方注册的不一致,多了或少了一个斜杠都会报redirect_uri错误。证书过期会导致断言验签失败。多节点部署时各节点密钥不同步,用户这次连A节点下次连B节点,令牌就解不开。这些要看身份服务和应用日志对时间点。

多账号共用一台电脑

同时登着个人账号和公司账号,或者开了一堆标签页后Cookie互相覆盖,SSO最容易出问题。养成用无痕窗口登公司系统的习惯,不同身份分开环境,能避免一大半看似莫名其妙的失败。

实在搞不定怎么办

找管理员查身份提供商后台的登录日志,那里会写明失败原因,比如用户不存在、密码错误、账号被锁定、缺少应用权限。拿到具体错误码比反复试有用得多。别急着重启服务器,先把日志抓出来。