登录系统演进、便捷登录设计与实现

4.jpg
作者 | 百度APP技术中台吧

导读

随着互联网、物联网和移动终端等技术的迅猛发展,登录认证面临着新的挑战和需求。虽然登录认证在信息系统中是传统且古老的组成部分,但未来的发展前景依然广阔。不论是用户登录、PC端、移动端还是智能设备的访问,身份认证在保障业务操作安全、资金安全、系统间通信和与外部系统集成等多个方面起到至关重要的作用。随着认证方式的不断演进,从最初的cookie和session,发展到如今的多端登录、多因子认证以及API令牌等多种认证手段。同时,用户终端设备的不断升级也推动着认证方式和手段的不断创新。

本文探讨登录认证技术的演进历程,并介绍在终端设备上实现便捷登录的设计与实现方法,以供各位同学参考。我们希望通过这篇分享,能够帮助读者深入了解和应用新型的登录认证技术。

全文6486字,预计阅读时间12分钟。

01 登录认证发展历史

账号系统作为一家企业的核心系统,承载着日益增长的业务需求。以百度为例,简化的结构如下:
image.png
其账号中心提供支撑服务,支持百度系内100+业务,包括百度APP、网盘、地图、贴吧等,具备全面的账号能力,这对账号系统提出了更高的要求和挑战,那么企业账号管理是如何一步一步发展到这一阶段,下面将分阶段简要介绍账号中心的发展过程:

1.1 单体应用时期

软件系统的建设初期,大多需求都是针对具体的领域中的业务,所以在建设过程中专注于系统业务的快速实现,对于登录认证的实现,往往都采用简单的账号密码进行登录,并在登录后返回服务器的用户数据,其交互流程如下:

image.png

在这种单一账号密码认证方式下,将用户信息存储在Cookie中的做法确实存在安全隐患,即使引入了httponly、secure、samesite等属性设置也难以完全解决泄露风险。因此,随着对安全性要求的提高,逐渐引入了token机制来加强认证和授权过程。

1.2 Token验证机制

Token机制的主要原理是在用户登录成功后,后端服务器生成一个加密的token,并将其返回给客户端,客户端在后续的请求中将该token携带在请求中。这种方式可以避免暴露用户信息,同时提高了安全性:

image.png

在这个阶段,已经按照功能模块对业务进行了初步划分,即账号功能模块与其他各个功能模块解耦,实现了模块独立化。这样的设计有利于系统的可维护性、扩展性和灵活性。

1.3 多业务统一账号中心

在将单一业务拆分成多个或新业务成立时,各业务系统都需要账号登录认证能力。为了实现能力复用、专注于业务划分,并确保各系统自身业务特点的建设,设计中不入侵各系统实现认证成为必要要求。为解决这一挑战,进入多应用账号中台阶段。该阶段的关键步骤包括:

1.设计统一认证方案: 制定一套统一的认证协议或标准,以确保各业务系统与认证中台之间的通信和数据交互规范。这样的设计有助于确保认证系统的稳定性和兼容性,同时简化了不同业务系统之间的集成和沟通。

2.搭建认证中心: 建立独立的认证中心系统,负责统一管理用户身份、处理登录请求、颁发令牌等任务。认证中心的建立能集中处理用户身份的统一管理和认证流程,实现高效管理,为各业务系统提供稳定可靠的认证服务。

3.业务系统集成认证中心: 业务系统在需要认证的场景调用认证中心提供的接口进行认证,避免自行实现认证逻辑,减少耦合。通过与认证中心进行集成,业务系统可以快速、简便地获取认证服务,大大提高了系统的可维护性和灵活性。

4.统一管理用户身份和权限: 认证中心统一管理用户身份信息和权限,确保各系统之间的用户身份一致。权限变更只需在用户中心进行,无需逐个系统修改。这种集中式的用户身份和权限管理方式有助于降低系统维护成本,并简化管理流程,同时提高了系统的安全性和一致性。

image.png

通过引入中台,我们可以实现认证能力的复用,降低各业务系统间的耦合度,更专注于业务逻辑的实现,提升系统的安全性和可维护性。

1.4 外部合作OAuth授权

随着公司集团业务的不断拓展,与外部第三方展开合作已成为必然趋势。在授权第三方使用百度的商业服务时,可能涉及到通过百度账号授权登录外部应用程序,而这一过程通常采用OAuth授权流程。OAuth是一个关于授权的开放网络标准,在全球范围内得到广泛应用,目前最新的版本是2.0版。

在OAuth的架构中,设立了一个授权层,用于在“客户端”与“服务提供商”之间进行连接。这意味着,客户端无法直接登录服务提供商,而必须通过授权层进行连接。这样一来,用户与客户端之间就得到了有效的区分。客户端登录授权层所使用的令牌(access token)与用户的密码不同。在用户登录时,可以指定授权层令牌的权限范围和有效期,以确保安全性和控制权限。

OAuth 2.0定义了四种授权方式:

1.授权码模式(authorization code)

2. 简化模式(implicit)

3. 密码模式(resource owner password credentials)

4. 客户端模式(client credentials)

其中,授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它通过客户端的后台服务器与“服务提供商”的认证服务器进行互动,这是它的特点。

在百度OAuth体系中,通常遵循授权码模式。以下是一次移动端流程的简要描述(Web流程内重定向流程有些许差异):

image.png

1.5 统一登录分散认证阶段

面对不同产品线安全级别存在差异,以及使用相同登录凭证可能导致整个百度集团产品线受到影响的问题,这确实是一个严峻的挑战。尽管各个应用的安全等级不同,但实施时却是并行的,这意味着一旦某个应用存在安全问题,可能牵扯到整个集团的安全。

在这种情况下,为了有效控制安全风险,可以考虑在统一认证凭证token的基础上,根据不同业务新增sub_token进行区分产品认证。这种做法有以下优势:

安全隔离: 通过为不同产品线新增sub_token,可以实现对不同产品线的安全隔离。即使某个产品线的token泄露,攻击者也只能获取到与该产品线相关的sub_token,而无法影响其他产品线的安全。

细粒度控制: 每个sub_token可以针对具体的产品线或业务场景进行配置,包括权限范围、有效期等。这样可以实现对不同业务的细粒度控制,提高了安全性。

快速应对风险: 当某个产品线出现安全问题时,可以快速作出响应,封禁受影响的 sub_token,从而降低了整体风险。

降低攻击影响: 即使某个sub_token被攻击者获取,由于其仅适用于特定的产品线或业务场景,攻击者对其他产品线的影响将大大降低。

通过引入sub_token,可以在确保统一认证凭证的基础上,进一步加强对不同产品线的安全管理和控制,有效降低了整个集团面临的安全风险。

image.png

02 便捷登录方案

随着技术的不断发展,软件功能的优化已成为行业的主要趋势。在保障安全的前提下,简化用户登录流程成为优化方向的首要任务。传统的账号密码登录方式需要用户手动输入用户名和密码,这一过程耗时且繁琐。即便是手机号短信验证码登录,用户仍需点击获取短信,查看验证码后再切回应用输入,涉及多个步骤。以下将介绍三种仅需一步操作即可完成的登录方式,以期为用户提供更便捷的体验。

2.1 运营商手机号一键登录

用户可以使用自己手机号码作为登录凭证,实现一键登录,这种登录方式通常与用户的手机号码关联,无需记忆繁琐的用户名和密码,提高了用户体验和登录效率,实现通常依赖于运营商的身份认证系统,通过向运营商发送请求等方式,验证用户sim卡。一旦验证通过,系统即可信任用户的手机号卡号,无需再次输入密码或其他信息。完整的一键登录设计一般为以下流程:

image.png

这种登录方式的优点包括方便快捷、安全可靠,减少了用户忘记密码或被盗号的风险。同时也降低了应用或网站的开发和维护成本,提高了用户的使用黏性和留存率。但需要注意的是,运营商手机号一键登录需要企业的系统支持用户绑定手机号,同时企业应注意用户相关隐私政策和条款,并向用户声明。

2.2 可信设备历史登录

历史账号一键登录是指用户无需重复输入账号和密码,而是通过一键点击即可完成登录操作。这种登录方式利用了用户过去登录过的账号信息,通过存储和验证机制,实现了用户登录过程的简化和加速。

用户无需反复输入账号和密码,只需点击一次即可完成登录,大大提升了登录过程的便捷性和速度。通过减少用户的操作步骤,简化了登录流程,从而提升用户的使用体验和满意度。虽然简化了登录过程,历史账号可以一键登录,但仍然需要经过安全身份验证机制,以确保用户账号的安全,例如遇到安全风险进行面部识别、双因素认证等技术手段。

2.3 人脸验证登录

顾名思义,用户使用智能设备进行人脸验证,在与底图比对验证通过后,派发账号的登录信息,这个过程有两个核心环节:①知道要派发哪个账号 ②用户的人脸底图收集。

对于环节①,一般设计都是用户主动输入自己的账号,自动触发检测当前账号是否支持人脸登录,或者使用历史登录过的账号自动触发检测,即:

image.png

而服务端检测用户账号是否支持人脸登录,一般需要用户主动开启刷脸登录方式,而在开启刷脸登录时,需要用户进行人脸验证录入底图,这样在下次使用人脸验证时,变可以使用录入的底图进行比对。当然,对于安全性要求较高的业务,可以引导用户进行实名,之后的刷脸登录访问公安网进行三要素比对(收费),而百度内部同时支持这两种流程,下面是一次完整流程:

image.png

总的来说,在设计登录方式时,必须综合考虑多个因素,包括安全性、便捷性和用户隐私保护。采取相应的措施来应对潜在的风险是至关重要的。通过平衡这些因素,可以为用户提供一个既安全又方便的登录体验。

03 展望

未来的企业登录系统设计将融合先进技术与用户友好性,迎来全新的时代。随着 AI 技术的飞速发展,登录系统将变得更智能化。系统能够学习用户的行为模式,智能识别异常登录尝试,并及时采取措施保护账户安全。同时,个性化的用户界面和交互设计将为用户提供定制化体验,满足不同需求。

在合规性和隐私保护方面,随着全球数据保护法规的不断加强,未来的登录系统将更注重用户数据隐私保护,并提供透明的隐私政策,使用户清晰了解数据使用和保护方式。

此外,公安部领导的CTID(公民身份识别)技术有望实现所有用户账号的全面打通。当这一时代来临,CTID技术将确保跨平台一致的登录体验,无论是在桌面、移动应用还是其他智能设备上,用户身份都能得到统一且安全的保障。也许不远的未来,公民身份一键登录所有应用的概念或将成为现实。

综上所述,未来的企业登录系统将是安全、智能、用户友好且高度集成的。它将提升企业运营效率,为用户带来更便捷、更安全的登录体验。随着技术不断演进,未来的登录系统将不再是简单的安全屏障,而是企业与用户互动的重要桥梁。

——————END——————

推荐阅读

一文带你完整了解Go语言IO基础库

百度交易中台之系统对账篇

揭秘百度数仓融合计算引擎

教不会你算我输系列 | 手把手教你HarmonyOS应用开发

漫谈数据分布可视化分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/585959.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14种建模语言(UML)图形

前言 UML 中有四种关系:依赖、关联、泛化和实现。这四种关系是 UML 模型中可以包含的基本关系事物。这里介绍14种UML图形:类图,对象图,包图,构件图,组合结构图,部署图,制品图,用例图…

DC电源模块的市场发展趋势分析

BOSHIDA DC电源模块的市场发展趋势分析 DC电源模块是一种将交流电转换为直流电的模块,广泛应用于各种电子设备中。随着科技的不断发展和电子产品的普及,DC电源模块市场也在不断扩大。本文将对DC电源模块的市场发展趋势进行分析。 第一,随着电…

【二叉树】Leetcode 437. 路径总和 III【中等】

路径总和 III 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节…

DOTS:Burst

目录 一:简介 1.1 Getting started 1.2 C# language support 1.2.1 HPC# overview 1.2.1.1 Exception expressions 1.2.1.2 Foreach and While 1.2.1.3 Unsupported C# features in HPC# 1.2.2 Static read-only fields and static constructor support 1.…

Mysql故障和优化

一、MySQL故障 二、MySQL优化 1.硬件优化: 2.数据库设计与规划 1.提前估计数据量,使用什么存储引擎 2.数据库服务器专机专用,避免额外的服务可能导致的性能下降和不稳定性 3.增加多台服务器,以达到稳定、高效的效果。主从同步、…

PPP+VPN综合实验

一、实验拓扑 二、实验划分 三、实验需求 四、实验结果 1.配置各端口和pc的IP: pc1: pc2: pc3: pc4: R1: [r1]inter g0/0/0 [r1-GigabitEthernet0/0/0]ip ad 192.168.1.2 24 [r1-GigabitEthernet0/0/0]int s4/0/0…

网站HTTPS证书是什么?有用吗?

什么是HTTPS证书? HTTPS证书,全称为安全套接层证书或传输层安全证书,是数字证书的一种。它由受信任的证书颁发机构签发,用于证明网站的身份,并为网站启用HTTPS(超文本传输安全协议)。 HTTPS证书…

天生强运的属龙人,在本命年要非常谨慎

​ 辰龙是十二生肖之一,地支的第五位。龙是一个神化了的象征,气宇轩昂,威武智慧,代表着神圣与无上、尊严与强大是不可战胜的。多数生肖属龙的人都是温文尔雅,风度翩翩的。无论在什么场合只要得到肯定,他们…

【Redis】redis集群模式

概述 Redis集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。实际使用中集群一般由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护&#…

正则表达式引擎库汇合

1.总览表格 一些正则表达式库的对比 index库名编程语言说明代码示例编译指令1Posix正则C语言是C标准库中用于编译POSIX风格的正则表达式库 posix-re.cgcc posix-re.c 2PCRE库C语言提供类似Perl语言的一个正则表达式引擎库。 一般系统上对应/usr/lib64/libpcre.so这个库文件&am…

【css】文本过长溢出一行不换行普通css以及antd实现

.text-box { white-space: nowrap; /* 防止文字换行 */ overflow: hidden; /* 隐藏超出div的内容 */ text-overflow: ellipsis; /* 当内容超出时,显示省略号 */ max-width: calc(100% - 80px); /* 假设按钮宽度为80px,则设置div的最大宽度为容器宽度…

ts 中数据约束类型

在 swagger 等接口文档中,查看 json代码,复制 将其导入到 json.cn,便于查看 在api文件夹下,新建一个定义ts类型的文件 type.ts。 定义数据类型 ---> export interface Bbb {} 调用数据类型----> export type Xxx Bbb[]…