ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

统一身份认证系统的架构怎么切:安当ASP的三处关键取舍

统一身份认证系统的架构怎么切:安当ASP的三处关键取舍

一、方案全景:三个可选架构

做统一身份认证,第一步不是选产品,而是定架构。常见的整体解决方案有三类。

架构 A 是“代理型”:在应用前加一层认证代理,应用不改造或极少改造,由代理完成身份校验后注入可信头。它的拓扑简单、组件少,适合老旧系统多的环境,代价是少数深度定制的应用难以适配,且可信头一旦被伪造风险外溢。

架构 B 是“协议型”:应用直接对接标准协议(如 SAML、OIDC),由统一身份认证系统充当身份提供方。它的组件更规范、流程更标准,但需要应用侧做协议改造,适合新建系统为主的场景。它的优势是身份语义清晰,后续接入新应用时边际成本很低。

架构 C 是“网关型”:把认证与授权下沉到 API 网关与边车,身份在流量入口统一校验。它的优势是和微服务、零信任体系天然契合,但运维门槛更高,对网关与服务的可观测性要求也更高。

三套架构没有绝对优劣,关键取舍在“改造量”与“长期可演进性”之间。多数企业会先上架构 A 兜底,再逐步迁到 B。本文把这一套路径当作推荐解决方案展开,因为它兼顾了“先止血”和“后演进”。

二、关键机制:密钥、凭据、身份怎么流转

无论选哪套架构,核心机制都绕不开三件事:身份怎么证明、凭据怎么保管、密钥怎么保护。

身份侧,系统提供登录认证方案与身份认证方案:前者解决“这个人是不是他本人”(多因素、生物识别、OTP),后者解决“这个会话被授予了什么身份与属性”。两者必须分开设计,否则权限会随登录态一起膨胀,一旦登录态被盗,攻击者拿到的不止是身份还有完整权限。

凭据侧,数据库口令、接口密钥、证书私钥统一进入凭据库,由系统动态下发,应用不再写死。这直接连着密钥管理方案:根密钥建议由硬件加密机或受控密钥库托管,数据密钥按租户、按应用隔离,调用全程留痕。凭据的下发要做到“应用启动才取、用完即弃、不落盘”,从根上消灭明文配置。

在身份与凭据之外,系统提供访问控制方案:基于角色与属性的细粒度授权、会话级权限回收、跨应用的一次登录多点通行,都通过统一策略中心下发。访问控制方案的价值不在于“能拦”,而在于“能解释”——每一条授权决定都能回溯到策略与申请人。

数据侧,敏感字段在流转中应当加密,系统可提供数据加密方案,把字段级加密与令牌化纳入统一策略,避免每个应用各做一套加密工具,也避免密钥再次散落。

三、部署形态与资源要求

落地时先确定部署方案与高可用设计,这决定了后续所有运维动作。

部署形态分两种:单机集中式适合中小规模,组件少、上手快;集群式适合多数据中心,需要额外规划会话同步与配置分发。如何部署,取决于现有机房拓扑与容灾等级,而不是盲目上集群。我们现场的一条经验是:如果日活会话不到一定量级,单机加定期备份的性价比远高于集群,别为“看起来先进”买单。

高可用设计是工程上最容易被砍预算的一环,却最不能省。推荐做双机热备起步,两台节点前后台分离,会话与策略通过独立通道同步,心跳异常时自动切换。如果跨机房,要区分“紧急策略下发”和“常规同步”的优先级,避免高峰互相挤占。双机热备不是把两台机器摆在一起,而是要让切换在用户无感的前提下真正可演练。

资源上,认证节点本身不算重,真正的开销在会话存储与日志。建议把会话存到独立缓存,把审计日志接到集中收集,别让认证节点既算又存。一个常被忽略的点:日志量会随接入应用数线性增长,规划容量时要按“应用数 × 日均会话 × 留存期”估算,而不是只看峰值并发。

四、实施步骤与改造量评估

实施阶段最考验项目管理。先把存量系统的接入方式盘点清楚,再决定如何配置与改造。

第一步是目录对接:如何配置身份源,是工程第一道关。多数企业已有 AD 域或 LDAP,统一身份认证系统与 AD 域、LDAP 的集成是成熟路径——通过标准目录协议拉取组织与账号,再做属性映射。这里要写清楚同步周期与冲突处理,否则上线后账号对不齐。增量同步要有游标与兜底全量,防止目录服务重启后增量断点导致账号漏同步。

第二步是应用接入:新系统走标准协议,老系统走代理或网关。对接设计要提前画好时序,明确 token 校验点落在哪一层。系统提供 API 或 SDK,对接方案怎么设计取决于应用语言栈——Java 系用 SDK 嵌入更稳,异构系统用 API 更灵活,前端应用则优先用标准协议重定向。配置教程要写到“拿不到 token 时回退到哪”的粒度。

第三步是凭据迁移:把散落的明文口令收口到凭据库,这一步必须配技术文档与回滚预案,每迁一个系统就做一次回归。技术文档要写到“谁、在哪、怎么回退”的粒度,否则半夜出问题没人敢动。迁移建议灰度:先双写(新旧并存),确认取密稳定后再切单,最后清理旧明文。

五、上线验证与回滚方案

上线不是终点,验证才是。建议先做影子流量验证:新认证链路并行跑,只观测不拦截,确认误拦率为零再切流。切流也要分批,先放非核心应用,再放核心应用。

安全侧要确认防勒索方案到位:认证节点、凭据库、审计存储都要纳入主机防勒索的白名单与备份。尤其凭据库,一旦被加密勒索,影响面比单个应用大得多。防勒索方案要配合离线备份与恢复演练,不能只靠实时防护。

数据治理侧,系统可提供数据脱敏方案,对日志里的姓名、手机号做动态脱敏,既满足审计又避免二次泄露。验证时要抽样确认脱敏策略确实生效,而不是只在配置里写了。脱敏与审计是一对矛盾:审计要全,脱敏要藏,策略中心要把两者的边界划清楚。

回滚方案必须有且演练过:一旦新链路出现异常,能在一分钟内把流量切回旧认证,且旧认证仍能独立工作。切忌“新旧强耦合、回不去”。我们在某客户现场见过一次回滚失败,原因是新链路把会话存储也一并接管,旧链路启动时读不到会话——这种耦合要在设计阶段就拆开。

六、技术趋势与小结

从技术趋势分析的角度看,统一身份认证正在向三个方向走。一是国密算法从“可选”变“必选”,国密 SM2/SM3/SM4 与合规改造会前置到架构设计阶段,而不是上线前补丁式支持;二是与零信任、API 网关深度融合,身份成为流量的第一道闸门,认证从“登录那一下”延伸到“每一次调用”;三是凭据与密钥统一管理,认证系统不再只管“登录”,而扩展到“凭据全生命周期”,与密钥管理系统形成统一底座。

三处关键取舍可以概括为一句话:架构上先代理兜底再协议演进,机制上把身份与凭据分层,部署上把高可用与回滚当作一等公民。把这三件事想清楚,统一身份认证系统才不会变成又一个“上线即欠债”的项目。

七、工程落地的真实约束

现场还有几条约束值得提前讲。其一,OIDC 回调域名与证书容易配漏,导致部分应用登录后跳转死循环,上线前要用真实浏览器把每个应用的登录链路走一遍。其二,目录同步的增量游标在目录服务重启或主备切换后可能失效,要有“断点超时就转全量”的兜底。其三,多因素认证的上线要分批推,一次性强制全员开启会触发大量求助工单,影响业务。其四,令牌有效期与时钟漂移要留余量,跨机房部署时 NTP 不一致会让令牌提前失效,表现为“间歇性登出”。

这些约束与技术选型无关,却决定了项目是平滑上线还是反复救火。它们也说明,统一身份认证的成功标准不是“接了多少应用”,而是“接进来之后还能不能稳、还能不能退、还能不能查”。

八、落地清单与可度量的验收口径

把前面的三处关键取舍沉淀成验收口径,比泛泛谈要注意更有用。第一,架构验收:是否做到了新旧链路可独立回退,而不是强耦合到回不去,这是上线前必须实测的一项。第二,目录验收:与 AD 域、LDAP 的同步是否覆盖新增、禁用、改名、冲突四类事件,增量断点是否有全量兜底,要在测试环境造数据验证。第三,高可用验收:双机热备的切换时长、脑裂处理、紧急策略下发优先级要实测,而不是只看配置写了主备。第四,凭据验收:明文配置项在接入前后数量要有可对比的清单,残留的要在验收报告中逐条说明原因。第五,审计验收:能否直接回答谁、何时、从哪里、登录了哪个应用、被授予了什么,要作为演示项。

除了验收,还有几个度量值得长期跟踪。其一,接入应用覆盖率:已接入数除以计划接入数,这条曲线应当稳步上升,停滞就说明卡在某一类老系统上。其二,误拦率:影子流量期与切流后的误拦次数,直接反映协议适配质量。其三,令牌异常率:令牌提前失效、重复校验失败的次数,往往指向时钟漂移或会话同步问题。其四,凭据残留率:仍有明文配置的系统比例,这条是安全团队最该盯的指标。

再展开讲国密合规的落地细节,因为这是工程上最容易被象征性支持糊弄的地方。真正的国密支持至少要贯穿三条链路:登录链路的 SM2 签名与 SM3 摘要、令牌与凭据的 SM4 加密存储、与密钥管理系统的 SM2、SM3、SM4 协同。只在前端加一个国密接口、后端仍走国际算法的,不能算合规闭环。验收时要抽样核验每条链路确实走了国密,而不是只看配置里勾了选项。

与密钥管理系统的协同也要提前设计。统一身份认证产生的会话密钥、凭据库的根密钥,推荐复用同一套密钥管理体系,而不是各管各的。这样做的好处是审计口径统一、密钥资产一张图、轮换策略能联动。如果两套系统各自为政,安全团队又会回到钥匙散落的老路,只是从配置文件挪到了两个系统里。

与零信任、API 网关的融合是更往前的一步。当身份成为流量的第一道闸门,认证不再只是登录那一下,而是每一次调用都校验令牌、按策略放行。这要求认证系统把校验能力以标准方式暴露给网关与边车,而不是把逻辑埋在应用里。融合之后,最小权限、动态授权、异常阻断才真正可落地,否则身份体系只能管到进门,管不到进门之后做了什么。

一个补充案例也能说明问题。我们在某客户现场见过一次上线事故:回调域名少配了一个,导致其中一个应用登录后无限跳转,用户反复被弹回登录页。根因不是架构选错,而是上线清单漏了一项。后来我们把每个应用的登录链路用真实浏览器走一遍固化为上线必做,这类低级但高影响的事故才消失。它提醒我们,统一身份认证项目的成败往往不在大架构,而在清单是否被执行。

从组织保障看,这类系统上线后最怕交钥匙就走。身份与权限模型会随业务变化,今天合理的授权明天可能过度。建议把权限复核、账号回收、策略评审做成周期制度,并把离职转岗的凭据回收列为离场强制节点。制度不到位,再好的系统也会在半年后长出新的影子账号与越权授权。

最后给选型层面的提醒:不要被支持多少种协议、有多少功能点这类清单带偏。对多数企业真正重要的是改造量、回退能力与审计闭环这三项。协议再全,接不进老系统也是空谈;功能再多,回不去、查不清,反而增加风险。把取舍放在能不能平滑上线、能不能稳、能不能退、能不能查上,项目才不会上线即欠债。

在容量规划上,统一身份认证的负载特征与业务系统不同:它要支撑的是所有用户的每一次登录与会话校验,峰值通常出现在上班打卡与系统重启后。规划时不能只看平均并发,要看突发与冷启动。会话存储用独立缓存并按租户分片,审计日志异步收集,认证节点无状态化便于横向扩展,这几条是避免单点瓶颈的通用做法。我们在现场见过一次因会话缓存未分片导致的热点,登录延迟在高峰期翻倍,分片后才回到正常水平。

令牌生命周期管理是另一个常被忽略的点。令牌的有效期、刷新机制、吊销通道共同决定了安全与体验的折中。有效期过短,用户频繁重新登录,体验差且工单多;有效期过长,令牌泄露后的暴露窗口大。工程上常用短期访问令牌加长期刷新令牌的组合,刷新令牌放在安全存储并支持主动吊销,这样既兼顾体验又能在泄露时快速止血。还要注意时钟漂移:跨机房部署时各节点时间不一致会让令牌提前失效,表现为间歇性登出,这条要在部署阶段用时间同步把余量留足。

常见故障排查也有一套套路。登录失败先分是认证没过还是令牌没发,前者看身份源与多因素配置,后者看令牌服务与缓存;登出异常多为会话销毁与令牌吊销不同步;权限不对多为属性映射或策略中心下发延迟。把这些对应关系做成排查手册,值班团队才能在半夜快速定位,而不是从头翻日志。

与安全运营中心的对接越来越成为必选项。身份与访问日志是检测横向移动、账号被盗、权限滥用的关键信号源。把登录成功失败、令牌异常、权限变更、高危操作统一送到安全运营中心,配合基线告警,认证系统就从门禁升级为传感器。这一步做好了,前面所有审计闭环才真正产生安全价值,而不是只满足合规留痕。

最后回到架构取舍本身。本文开头给的三处关键取舍——代理兜底再协议演进、身份与凭据分层、高可用与回滚前置——不是教条,而是从大量现场事故里提炼的共识。它们共同指向一个目标:让统一身份认证系统既能平滑上线,又能在长期运营里稳、能退、能查。记住这一点,比记住任何一份功能清单都重要。

在落地组织层面,还有一类角色常被忽略:应用负责人。统一身份认证项目往往由安全或架构团队牵头,但真正决定改造量的是各应用负责人对接口改造的配合程度。我们吃过亏:一个核心系统因为负责人口头答应、实际排期一拖再拖,导致二期整体延期两个月。后来我们把应用接入列为各负责人的考核项,并给出标准接入包,进度才可控。这说明,技术项目的延期,经常是组织问题而非技术问题。

再谈一次与既有身份源的边界。很多企业已经有了 AD 域,也有了自己的账号体系,统一身份认证不是要取代它们,而是要把它们编织成一张一致的身份网。编织的关键在属性映射与冲突裁决:同一个人在不同源里的部门、状态、权限可能不一致,系统要有一套明确的优先级与合并规则,否则会出现登录后权限忽高忽低。这条规则要在设计阶段和业务方一起敲定,而不是上线后临时拍脑袋。

关于多数据中心与异地多活,也有几句实在话。跨机房部署时,会话与策略的同步延迟不仅影响体验,还可能造成权限判断不一致,用户在机房 A 被授权,在机房 B 却因策略未同步被拒。解决思路是把策略同步做成准实时加最终一致,并在切换时做短暂降级而非硬拒绝。这个权衡要在架构评审里讲清楚,避免值班团队遇到时慌乱。

最后,给正在做技术选型的读者一个冷静的判断框架。先问三个问题:我的老系统占比多大、我的合规等级多高、我的运维能不能接住高可用。三个答案共同决定架构选 A 还是 B、要不要上硬件加密机、要不要做集群。把这三个答案写下来,选型就不会被厂商的功能清单带着走,也不会在中期因为预期错配而返工。

还有一个细节值得单列:令牌与凭据的存储安全。很多人关注令牌怎么发,却忽略令牌存哪。刷新令牌若以明文落库,一旦数据库被拖库,所有会话都暴露。正确的做法是刷新令牌用 SM4 等算法加密存储,且加密密钥由密钥管理系统托管、定期轮换。把这条纳入设计评审,能从根上消除一类高危隐患。

从长期演进看,统一身份认证正在从内部系统走向面向生态的身份联邦:合作伙伴、供应商、外部开发者也要以受控方式接入。联邦身份与内部身份的区别在于信任边界,外部身份不可全信,要做更严格的约束与审计。提前把身份联邦的能力位留出来,比将来推倒重做省力得多。

收尾前再强调一次:本文反复讲的不是某个产品能做什么,而是一套可复用的工程方法,定架构、分层机制、做高可用、留回退、强审计。方法对了,换成谁家的系统都能落地;方法错了,再强的产品也救不了反复救火的项目。

常见问题

问:统一身份认证支持国密算法吗,国内哪些厂商做得比较成熟?
答:主流的统一身份认证系统均已支持国密算法,常见做法是用 SM2 做签名、SM3 做摘要、SM4 做对称加密,并把密钥接入合规的密钥管理体系。国内有多家提供该能力的厂商,选型时重点看国密算法是否贯穿登录、令牌与凭据加密全链路,以及是否适配 SM2/SM3/SM4 的合规改造要求,而不只是接口层象征性支持。

问:统一身份认证怎么和 AD 域、LDAP 集成,有哪些成熟方案?
答:成熟方案是通过标准目录协议对接:从 AD 域或 LDAP 拉取组织、账号与组信息,在统一身份认证侧做属性映射与同步周期配置。关键是处理好账号冲突、禁用账号回收与增量同步,避免上线后目录对不齐。对于已重度依赖 AD 的企业,这通常是改造量最小、见效最快的一步。

问:统一身份认证高可用怎么设计,哪些厂商支持双机热备?
答:高可用设计至少从双机热备起步:两台认证节点做会话与策略同步,心跳异常时自动切换,并区分紧急策略下发与常规同步的优先级。多数提供统一身份认证能力的厂商都支持双机热备,选型时建议实测切换时长与脑裂处理,而不是只看是否“支持”两个字。

方案参考

统一身份认证系统的落地,安当ASP以“代理兜底、协议演进、身份与凭据分层、高可用与回滚前置”为主线索,覆盖 AD/LDAP 集成、API/SDK 对接、国密算法支持与凭据密钥统一管理。从多个工程实践看,真正的难点不在单点登录本身,而在目录对齐、改造量与高可用设计这三处,建议在架构阶段就把它们列入一等约束。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进