大家好,我是雷布斯。
在上一篇“面试官:登录功能是怎么实现的?(上)”中,我们介绍了Cookie + Session 登录
、Token 登录
、SSO 单点登录
的原理和流程,今天继续来介绍OAuth2 第三方登录
、扫码登录
以及一键登录
。
OAuth
是一种常用的开放标准协议,用于在不同应用之间安全共享用户资源(如个人信息、照片、视频等)。目前已经发展到OAuth2.0
版本,相较于1.0
版本更加关注客户端开发者简易性,而且为桌面应用、web应用、手机设备提供专门认证流程。
而第三方登录则是OAuth
协议中的一种应用场景。具体来说,第三方登录是指用户选择使用第三方平台的身份认证服务来登录某个应用程序。
OAuth2.0
标准定义四种角色:
Authorization Server
):认证服务器是授权过程的“受信任的第三方”,负责颁发访问令牌(Access Token
),用于访问资源服务器。Resource Server
):资源服务器是托管受保护资源的服务器,例如照片、视频、个人资料等。Client
):客户端是请求访问受保护资源的应用程序。它可以是Web应用程序,移动应用程序,桌面应用程序等。Resource Owner
):资源所有者是拥有受保护资源的用户。他们授权客户端访问其资源。其实 OAuth2.0
标准定义四种授权模式:
四种授权模式中最常用的是授权码模式。
授权码模式是指第三方应用先申请一个授权码,然后再用该码获取令牌。这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。
授权码方式授权大体上分为四步:
以微信登录为例,当用户在某个网站或应用上选择使用微信登录时,该网站会向微信发送一个授权请求,微信会提示用户确认授权,并返回一个令牌(access token
)给该网站,该网站通过验证令牌的有效性后,即可实现用户的自动登录和获取用户的相关信息。
相比于传统的用户名密码登录方式,第三方登录具有以下优势:
需要注意的是,虽然第三方登录可以提高用户体验和安全性,但也存在一些潜在的安全风险,例如用户授权过多、第三方平台信息泄漏等问题。
因此,在实际的开发和应用中,需要合理选择第三方平台、进行授权管理、保护用户隐私等措施,以确保用户数据的安全性和可靠性。
扫码登录是一种快捷方便的登录方式,用户只需要通过扫描二维码即可完成登录操作,无需输入用户名和密码等信息。在网页、APP 等应用中广泛应用,可以提高用户使用体验和安全性。
以扫码登录某个网站为例:
以“前端面试题宝典”的 PC 端登录为例,就是使用了微信扫码能力和小程序的授权功能。
首先,PC 端在进行登录操作时,会从后端请求一个临时的小程序二维码进行展示,二维码中会包含一个 id 参数,并根据该 id 轮询扫码状态。
引导用户使用微信扫码后,会在微信中打开“前端面试题宝典”小程序,跳转到小程序中一个专门的授权登录页面,并在该页面会请求用户的部分数据。
用户确定授权后,会将授权数据同步给后端。
PC 端在下次轮询时拿到授权成功的状态及用户头像等数据,完成登录操作。
扫码登录有以下优势:
当然,由于扫码登录需要使用到第三方平台,例如微信、支付宝等,可能会涉及到第三方的隐私问题和数据共享问题。
一键登录,也叫“本机号码一键免密登录”,是指用户在移动端应用或网站中,通过验证手机号快速完成登录的方式。
这是一种更为“懒人”的验证方式,既不需要用户输入账号密码,也不需要输入手机号来获取短信验证码,接受协议后,直接由运营商帮助APP取号验证,用户可以点击一键登录。
相比于传统的账号密码登录方式,一键登录更加方便快捷,并且可以免除密码管理和找回密码等问题。
要使用一键登录,需要接入运营商的 SDK,三大运营商使用了同一套授权流程:
主要步骤如下:
调用 SDK
的初始化方法,传入项目在平台上的 AppKey
和 AppSecret
。
调用 SDK 唤起授权接口。SDK 会先向运营商发起获取手机号掩码的请求,请求成功后跳转到授权页。授权页会显示手机号掩码以及运营商协议给用户确认。
用户同意相关协议,点击授权页面的登录按钮,SDK
会请求本次取号的 token
,请求成功后将 token
返回给客户端。
将获取到的 token 发送到我们自己的服务器,由服务器携带 token
调用运营商一键登录的接口,调用成功就返回手机号码了。服务器用手机号进行登录或注册操作,返回操作结果给客户端,完成一键登录。
在没有插电话卡,或者关闭移动蜂窝网络的情况下,是无法完成认证的。所以就算接入了一键登录,我们也要兼容传统的登录方式,允许用户在认证失败的情况下,手动输入手机号登录。
以上就是剩余几种登录方式的介绍。
最后再给“前端面试题宝典”的辅导服务打下广告,目前有面试全流程辅导、简历指导、模拟面试、零基础辅导和付费咨询等增值服务,感兴趣的伙伴可以联系小助手(微信号:interview-fe)了解详情哦~