首页 > 资讯 > Airbnb 采用服务端驱动架构,身份验证代码量减少 60%

Airbnb 采用服务端驱动架构,身份验证代码量减少 60%

InfoQ 2026-09-10 13:01 1 阅读 查看原文

Airbnb 重新设计了其认证架构,使 Web、iOS 和 Android 端的登录流程更便于迭代调整。新系统将认证决策从客户端转移到了服务端策略引擎,该引擎根据用户和会话上下文选择最合适的身份验证校验方式。据 Airbnb 介绍,本次架构重构把身份验证相关代码量减少了 60%,Web 客户端包体积减小了 100 KB,成功认证率提高了 2.6%,重复账户创建减少了 27%。

Airbnb 的“先识别再校验”架构(来源:Airbnb 博客文章

该架构将身份验证拆分为两个阶段。首先,用户使用电子邮件地址、电话号码或第三方社交登录来识别他们想要访问的账户。然后,服务器评估账户和会话信息,并使用可配置的策略引擎选择成功率最高的验证方式,其他可用验证方式作为备选选项返回。例如,系统可以优先为巴西用户选用 WhatsApp OTP,或为韩国用户选用当地身份认证服务商。

Airbnb 工程师 Jose Santos 解释了重新设计背后所面临的用户痛点:

用户往往会记不得几个月或几年前他们是如何创建账户的。他们可能更换了设备、原手机号已经无法使用,或者在其他地区使用不同的登录方式。身份验证机制必须能够适配这类复杂情况。

一个关键的架构变化是客户端不再决定呈现哪种认证方式。服务器做出这一决策,而客户端仅负责渲染服务器返回的页面。这使得 Airbnb 能够按区域调整认证策略或进行实验,而无需发布新的客户端代码。

Airbnb 引入了服务端驱动的 Challenge Picker),帮助用户在认证失败时无需重新开始整个流程即可恢复。每个挑战都包含一个“尝试其他方式”选项,服务器会根据先前成功的方法、已注册的认证方法以及平台可用性返回排序后的备选方案。

服务端驱动的认证流程(来源:Airbnb 博客文章

公司将服务端驱动模型扩展到了注册和登录流程。账号标识输入、身份验证挑战、账号选择以及异常处理界面,全部由服务端定义页面来实现。Web、iOS 和 Android 客户端渲只负责渲染这些页面,并将用户操作回传给服务端。服务端模式还会生成客户端类型定义,并且在开发阶段辅助检测前后端数据不匹配问题。

将认证流程逻辑转移到服务器改变了 Airbnb 的实验迭代周期。新系统上线后的前三个月,公司进行了 20 余次实验,其中无需改动客户端的实验,从想法提出到拿到可量化的实验结果只需几天而不是几周。

本次架构重构还涵盖了区域认证方法、返回用户流程、加载状态和错误处理。Airbnb 首席体验设计师 Chloe Fan 表示,最初的极简版本由于交互界面太容易被用户误关闭,反而造成用户参与度下降,这也推动团队开展更多实验并持续迭代优化。

Airbnb 报告称,成功认证率提高了 2.6%,重复账户创建减少了 27%,OTP 成本降低了约 11%。新架构让 Airbnb 能够持续迭代身份验证方式与流程逻辑,而无需将这些业务判断逻辑硬编码到各个客户端当中。

查看英文原文:https://www.infoq.com/news/2026/09/airbnb-server-driven-login/