Airbnb重新设计了其认证架构,使Web、iOS和Android端的登录流程更便于迭代调整。新系统将认证决策从客户端转移到服务端策略引擎,该引擎根据用户和会话上下文选择最合适的身份验证校验方式。据Airbnb介绍,本次架构重构把身份验证相关代码量减少了60%,Web客户端包体积减小了100KB,成功认证率提高了2.6%,重复账户创建减少了27%,OTP成本降低约11%。
该架构将身份验证拆分为“先识别再校验”两个阶段。首先,用户使用电子邮件地址、电话号码或第三方社交登录来识别他们想要访问的账户;然后,服务器评估账户和会话信息,并使用可配置的策略引擎选择成功率最高的验证方式,其他可用验证方式作为备选选项返回。例如,系统可以优先为巴西用户选用WhatsApp OTP,或为韩国用户选用当地身份认证服务商。Airbnb工程师Jose Santos解释,用户往往会记不得几个月或几年前如何创建账户,可能更换了设备、原手机号已无法使用,或在其他地区使用不同登录方式,身份验证机制必须适配这类复杂情况。
一个关键的架构变化是客户端不再决定呈现哪种认证方式。服务器做出这一决策,客户端仅负责渲染服务器返回的页面,这使得Airbnb能够按区域调整认证策略或进行实验,而无需发布新的客户端代码。Airbnb还引入了服务端驱动的Challenge Picker,帮助用户在认证失败时无需重新开始整个流程即可恢复,每个挑战都包含“尝试其他方式”选项,服务器会根据先前成功的方法、已注册的认证方法以及平台可用性返回排序后的备选方案。
公司将服务端驱动模型扩展到注册和登录流程,账号标识输入、身份验证挑战、账号选择以及异常处理界面全部由服务端定义页面实现,Web、iOS和Android客户端只负责渲染页面并将用户操作回传服务端。服务端模式还会生成客户端类型定义,并在开发阶段辅助检测前后端数据不匹配问题。新系统上线后的前三个月,Airbnb进行了20余次实验,其中无需改动客户端的实验,从想法提出到拿到可量化结果只需几天而不是几周。Airbnb首席体验设计师Chloe Fan表示,最初的极简版本由于交互界面太容易被用户误关闭,反而造成用户参与度下降,这也推动团队开展更多实验并持续迭代优化。
咨询
咨询