AI网关调用方身份联合认证与单点登录集成落地

日期:2026-08-16

一、项目背景

我们的 AI 网关一开始接进来的调用方不多,每个应用发一个 API Key 就能调,简单直接。后来业务线越接越多,几十个应用各自持 Key,问题就来了。Key 散落各处没人管,有的应用下线了 Key 还在生效,离职的人带走的 Key 也没人回收。安全团队找过来,要求所有调用方走统一身份,但我们不可能让每个业务方再记一套网关的账号密码,他们本来就在用公司的 SSO。

所以我们决定把网关的身份认证接进公司现有的 SSO,调用方通过 OIDC 单点登录拿到身份,网关侧再映射成调用令牌,Key 这东西能不发的就不发。这个方案安全团队认可,业务方也接受,因为登录还是走他们熟悉的那套公司账号,没有额外负担。

二、落地场景

网关后面挂了多种模型,不同应用调不同的模型,权限还不一样。落地场景是:应用方在自家系统里点一下就能跳到公司 SSO 登录,登录成功后网关拿到它的身份,生成一把短期调用令牌下发,应用拿这把令牌调模型。人员离职或者应用下线,SSO 那边一注销,网关侧的令牌跟着失效,不用我们手动去删 Key。

异常登录也要管。比如某个调用方平时从办公网访问,突然从陌生 IP 高频调用,网关要能识别并风控。这块我们接了公司的安全态势感知,异常信号直接推过去,安全团队能实时看到是谁在异常调模型,比之前盲发 Key 的时候透明多了。安全团队后来还提了一个需求,希望按应用维度看调用趋势,我们接了网关侧的统计,每个应用的调用量、成功率、异常数都能在管控台拉出来,安全巡检的效率明显提升,他们也不用再找我们要日志了。

三、关键技术挑战与解决思路

SSO 协议适配是第一道关。公司的 SSO 是标准 OIDC,我们网关作为 SP 去对接,拿到 id_token 之后要验签、要校验 audience 和过期时间,这些步骤一个都不能省,否则伪造令牌就能混进来。我们专门写了个适配层,把这几步固化成必过校验,还加了 nonce 防重放,避免有人截到令牌重放一遍。

会话和令牌的映射要想清楚。SSO 登录是一次性的,但应用调模型是持续的过程,不能每调一次都跳一次登录。我们的做法是网关拿到 id_token 后换发一把自定义的短期调用令牌,有效期按业务节奏定,快过期前应用用刷新令牌续,映射关系在网关侧维护,登出时级联失效。刷新令牌我们加了频次限制,防有人把它写死在循环里疯狂续。

登出同步是个容易漏的点。用户在 SSO 登出,网关这边的令牌如果还有效,就等于登出不彻底。我们通过 SSO 的退出广播加上令牌黑名单,保证一端注销、两端同时失效。这块我们测的时候专门造了一个场景,用户在 SSO 退了,立刻拿旧令牌调模型,确认被拒,才放心上线。

迁移过程我们做了灰度,先接新接入的应用,旧 Key 的应用给了一个过渡期,双轨跑了两个月才全部切到 SSO,期间没出现大规模登录故障。安全团队后来用这个新体系做了一次红蓝演练,伪造的旧 Key 和过期令牌一律被拒,他们挺满意。现在新应用接入平均半天就能完成身份对接,比以前发 Key 配权限快得多。权限映射我们也顺手梳理了一遍,之前散在代码里的模型授权收拢到 SSO 的角色里,离职人员不光令牌失效,连背后的角色也跟着注销,权限回收才算真正干净。

四、效果数据

接了 SSO 之后,统一身份覆盖率从原来靠 Key 的零散状态提到了接近全覆盖,新接入的应用不再发 Key,Key 散落的数量逐月下降。离职人员的调用回收从原来平均要几天人工处理,变成登出即失效,回收时效从天级降到秒级。越权调用,也就是调了不该调的模型的次数,监测期内抓到并拦截了若干起,都是旧 Key 没回收导致的,新体系下这类问题基本消失。

案例片段(已脱敏): 网关令牌映射的一段配置(yaml 示意): auth:  method: oidc  issuer: "https://sso.internal"  audience: "ai-gateway"  token_ttl: 3600  refresh_ttl: 86400  refresh_rate_limit: 60  logout_broadcast: true 一次风控日志:某调用方 id_token 验签通过但 audience 不符,网关直接拒,拦截了一起错配应用的越权尝试;另一次离职人员旧会话在 SSO 注销后 2 秒内网关令牌进入黑名单失效。刷新频次限制拦截过一次应用循环续令牌的异常。

五、可复用经验总结

网关身份这件事,我的建议是别再发一堆 Key 了,接现成的 SSO 省心还安全。我们之前靠 Key 的时候,回收全靠人记,漏一次就是一次风险,接了 SSO 之后回收跟着人走,安全团队也满意。

令牌映射一定要做短期加刷新,别让用户每次调接口都跳登录。但我们踩过一次刷新令牌没限制次数的坑,一个应用把刷新令牌写死在循环里疯狂续,后来加了刷新频次限制才压住,这类细节上线前容易忽略。

登出同步最容易被忽略。我们最早只管 SSO 登录,忘了登出要级联,结果测的时候发现用户在 SSO 退了网关还能用,这是个挺尴尬的安全漏洞,补上黑名单之后才放心。安全相关的同步,建议把登录和登出当成一对来测,别只测一边。