Portal 认证系统用微信认证、短信认证或者对接企业统一身份,体验上确实比让用户记账号密码好得多。但这些方式都有一个共同点:认证能不能成功,不只取决于你自己的系统。微信服务不可用、短信通道拥堵、企业目录服务在维护窗口期,这些情况一旦发生,用户就卡在认证这一步上不去网。认证方式全景图里明确列了这类风险,依赖第三方系统时,第三方故障会直接影响认证。所以做方案的时候,光选一个体验最好的认证方式是不够的,还要想清楚它挂了怎么办。
依赖点在哪里要先画出来
先把每种认证方式依赖什么画出来。微信认证依赖微信侧服务可用,同时依赖用户终端能正常访问外网;短信认证依赖短信服务商通道,通道拥堵时验证码会延迟甚至到不了;对接企业统一身份的方式依赖目录服务可用,而目录服务通常有自己的维护窗口;对接第三方数据库的认证方式依赖那套数据库能正常响应。把这些依赖点列成一张表,每个点标注谁负责、故障了联系谁,后面设计兜底方案时才知道要兜哪些。
主备并存而不是二选一
兜底的核心思路是主备并存。主认证方式选体验最好的那个,备用方式选一个不依赖同一套外部系统的。比如主用微信认证,备用就不要再选另一个同样依赖外网的服务,可以考虑本地账号密码或者前台生成的临时授权码。选备用的原则是依赖点要和主用错开,否则主用挂了备用也跟着挂,兜底就形同虚设。这一点在方案评审时经常被忽略,大家只看到配了两个认证方式,没注意两个方式走的是同一条外部链路。
备用方式要匹配场景
备用方式不是随便挑一个就行,要匹配具体场景。酒店场景里,前台可以生成一次性上网凭证或者临时授权码,工作人员录入信息即可,这类方式不依赖外部服务,也不要求客人重新注册。校园场景里,本地账号体系可以作为备用,学生本来就有学号账号。企业场景里,如果主用对接统一身份,备用可以考虑管理员预置的访客账号。选择的时候要算一笔账:备用方式启用时,工作人员要多做多少事,用户要等多久,这个代价能不能接受。
切换触发条件必须可观测
兜底方案里最容易被省略的是触发条件。谁来判定主用方式不可用了?凭感觉切换往往切换得太晚,等管理员收到投诉再动手,可能已经影响了一批用户。比较可靠的做法是用可观测的指标来触发,比如认证请求连续失败率、超时率、或者某个依赖点的健康检查连续失败。指标要设阈值,达到阈值就发出告警并且给出切换建议。阈值定得太敏感会频繁误报,定得太迟钝又起不到作用,这需要根据实际运行数据调,不能一次定死。
合规要求不能因为兜底降级
这里有个容易踩的坑。有些场景涉及实名和审计要求,短信认证往往是不可跳过的,因为它能把手机号和上网行为关联起来,满足溯源需要。如果第三方短信通道出问题,就临时切到不需要实名的认证方式,短期看解决了上网问题,但留下的是合规缺口。所以设计兜底方案时要先明确哪些要求是硬性的,硬性要求对应的能力在备用方案里必须保留。备用方式可以牺牲体验,但不能牺牲必须留痕的字段。
上线前要真的演练一次
兜底方案最常见的问题是从来没被验证过。配置里写了备用方式,但没人真的在主用不可用的情况下走一遍完整流程,结果真出故障时才发现备用方式的模板没配、短信模板没审、或者工作人员不知道怎么操作。建议在项目验收阶段专门安排一次演练,把主用方式的依赖点人为断掉,观察系统是否按预期切换、用户是否能完成认证、工作人员的操作是否顺畅。演练中发现的问题,比等真实故障暴露出来再改要便宜得多。
投入和代价的权衡
最后要算一笔经济账。备用认证方式、额外的通道、演练投入,这些都是成本,而它换来的是故障时的业务连续性。对于用户量大、投诉成本高的场景,这套投入是值得的;对于规模很小、用户容忍度高的场景,可能只需准备一个人工处理的预案就够了。不建议不加区分地上全套兜底,也不建议为了省事完全不做。判断依据是故障一次的实际代价,包括用户流失、投诉处理成本和对口碑的影响。
备用方式的凭证要有回收机制
启用备用认证方式时,用户身份怎么确认是个实际问题。如果是现场生成的临时授权码或者一次性凭证,就要同时定好有效期和回收规则:凭证多久失效、用完之后是否立即作废、由谁负责生成和登记。没有回收机制的临时凭证会越积越多,一段时间之后网络里飘着一批不知道谁发的、也不知道什么时候该失效的上网凭证,这本身就是新的安全隐患。备用方式图的是应急,不能因为应急把长期管理丢了。