关于后端:十分钟搞懂手机号码一键登录

6次阅读

共计 4496 个字符,预计需要花费 12 分钟才能阅读完成。

手机号码一键登录是最近两三年呈现的一种新型利用登录形式,比之前罕用的短信验证码登录又不便了不少。登陆时,利用首先向用户展现带有本机号码掩码的受权登录页面,用户点击“批准受权”的按钮之后,利用即可获取到残缺的本机号码,从而实现用户的登录认证。在这个过程中,利用只有确认登录用的手机号码是在绑定了此号码的手机上发动的即可认证胜利,从这一点来看,它和短信验证码登录并无本质区别,都是一种设施认证登录形式。这篇文章就来捋一下其中的技术门道。

这几年为了爱护用户的隐衷平安,Android 和 iOS 零碎都限度了利用获取本机号码的能力,即便通过某些技术手段获取到了本机号码,这个号码还可能是被篡改的,所以利用间接读取本机号码用于登录是不可行的。那么这些利用是怎么获取到实在的本机号码的呢?答案是电信运营商,手机要打电话、要上网、要计费,运营商必定能对应到正确的手机号码。国内的运营商就是挪动、联通、电信这三家,它们都凋谢了这种能力。对于在互联网大潮中被管道化的运营商来说,不失为一种非常有意义的积极进取。

手机流量上网的原理

手机号码一键登录是借助手机流量上网来实现,所以先要搞清楚流量上网的原理。

目前网上已有很多对于一键登录的技术文章,然而内容根本雷同,对于获取手机号码的局部,所述都是通过运营商的数据网关能力,语焉不详,对于有谋求的技术人来说,难以忍受。这个章节就来介绍下这种从数据网关获取手机号码的能力是如何实现的,因为通信专业知识非常繁冗,我也没有通过业余的学习,大家也不想接触到很多的专业名词,所以这里只保留一些要害的专业名词,尽量以通俗易懂的形式来理清这个机制。

五层网络模型

对网络比拟相熟的同学,应该理解五层协定,那么手机流量上网时的五层网络模型有何不同呢?

从上图能够看出,手机流量上网的次要区别在数据链路层和物理层。在数据链路层,流量上网没有 MAC 地址的概念,它采纳一种点对点协定(PPP),手机端通过拨号形式建设这种 PPP 连贯,而后发送数据。在物理层,流量上网通过手机内置的基带模块进行无线信号的调制、解调工作,从而实现与挪动基站之间的电磁波通信。

流量上网的机制

点对点协定反对身份验证性能,手机端发动连贯时会携带本人的身份证明,个别就是手机卡内置的 IMSI,这个 IMSI 也会保留在运营商的数据库中,因而基站就能够验证连贯用户的身份,当然这个验证过程不是简略的比照 IMSI,会有更多平安机制。为了更分明的理解流量上网机制,上面再来一张 4G 流量上网时手机与运营商的交互示意图:

外围组件

手机:这其中对流量上网起到关键作用的就是手机卡和基带模块。手机卡中保留了 IMSI,全称 International Mobile Subscriber Identification Number,国内移动用户识别码。IMSI 是手机卡的身份标识。

基站:就是外边常见的铁架子信号塔,是一种能笼罩肯定范畴的无线电收发信息电台,手机会连贯到它,而后它再通过光纤连贯到运营商网络,从而实现挪动通信。

MME:Mobility Management Entity,挪动管制单元。手机建设连贯时会先拜访到这里,负责:手机与基站的接入管制,手机卡的鉴权、会话治理、平安传输,漫游管制、跨运营商通信等。

HSS:Home Subscriber Server,归属签约用户服务器。保留本地签约的手机卡信息,包含手机卡 IMSI 与手机号的对应关系,手机号的套餐信息、手机号的归属地信息等。

S-GW:Service Gateway,服务网关。4G 环境下,用户侧与运营商核心网之间的业务网关。拜访能不能进入,能做什么业务,去哪里做业务,是在这里管制的。跨运营商计费、漫游计费等也在这里实现。

P-GW:PDN Gateway,PDN 网关。运营商核心网与互联网之间的网关,手机真正上网就是通过它了。它会给手机调配一个 IP 地址,管制上网的速度,对流量进行计费等。

PCRF:Policy and Charging Rules Function,策略与计费管制单元,保留每个用户的网络拜访策略和计费规定。

上网过程

为了不便了解,这里将上网的过程大抵分为两个局部(和上图的 1、2 对应):

  • 1 接入:建设连贯时,手机携带 IMSI 信息,通过基站拜访到 MME,MME 通过 HSS 验证 IMSI 信息,而后 MME 进行一些初始化工作,返回一些鉴权参数给手机,手机再进行一些计算,而后把计算结果返回给 MME,MME 验证手机的计算结果,验证通过则容许接入。这个过程保障了接入的平安,MME 还为后续的数据传输提供了加密传输反对,爱护数据不被窃听和篡改,有趣味的同学能够去具体理解下。

    如果手机卡销售的时候没有写入手机号,手机卡首次注册注销的时候,运营商会从 HSS 中取出手机号,而后再写入手机卡中。

    理论利用中,为了避免跟踪和攻打,不是每次通信时都要携带 IMSI,MME 会生成一个长期的 GUTI 对应到 IMSI,就像 Web 程序中的 SessionId。MME 还有肯定的机制管制 GUIT 的重新分配。

  • 2 传输:手机网络流量的传输,还是先要通过基站,而后下一步进入 S -GW,S-GW 会检查用户的受权,就像 Web 程序中查看前端提交过去的 SessionId,再看看用户有没有权限进行其提交的业务,这里就是看看用户有没有开明流量上网,这是 S -GW 通过连贯 MME 实现的。S-GW 处理完毕后,数据包会进入 P -GW,P-GW 在手机应用流量上网时会给用户调配一个 IP 地址,而后数据包通过网关进入互联网,拜访到相干的资源。P-GW 还会对上网行为进行速率管制、流量计费等操作,这些策略来源于 PCRF,PCRF 中的规定是依据 HSS 中的用户套餐、用户等级等计算出来的。

    对 P -GW 来说 S -GW 屏蔽了用户的移动性,手机在多个基站切换时,S-GW 不变。

以上就是手机流量上网的基本原理了,能够看到,运营商通过 IMSI 或者 GUTI 齐全有能力获取到以后上网用户的手机号码。对于运营商的一键登录具体是怎么实现的,我并没有找到相干的介绍,然而能够构想下:手机利用通过运营商的 SDK 发动获取手机号码的业务申请,此时会携带 IMSI 或者 GUTI,业务申请达到 S -GW,S-GW 鉴权通过,而后将这个业务申请路由到运营商核心网中获取手机号码的服务,服务依据业务规定从 HSS 中取出手机号码并进行若干解决。

一键登录的原理

了解了手机流量上网的原理,再来看下一键登录业务是如何实现的,这个局部属于下层利用程序开发,大家应该绝对相熟一些。

如果你接入过微信的第三方利用登录,或者其余相似的第三方利用登录,过程是差不多的。还是先来看图:

这里对一些关键步骤进行阐明:

  • 2 预取手机号掩码:这个手机号掩码须要在申请用户受权的页面展现给用户看,因为获取这个信息要通过电信运营商的网络,所以可能会比较慢,为了晋升用户体验,能够在利用启动的时候就去获取,而后缓存一段时间。
  • 8 受权申请:因为利用获取用户手机号这个事比拟敏感,必须让用户分明的理解并受权之后能力进行,为了确保这件事,运营商的认证 SDK 提供了这个受权申请页面,用户确认受权后,SDK 间接向运营商认证服务发动申请认证,认证服务会返回一个认证 Token 给利用。利用再通过本人的服务端拿着这个 Token 找运营商获取手机号码。
  • 17 生成利用受权 Token:利用要保护本人用户的登录状态,这里能够采纳传统的 Session 机制,也能够应用 JWT 机制。
  • 3 预取手机号掩码 和 11 申请认证,都须要通过手机蜂窝网络通信,也就说须要通过手机流量上网。如果手机同时开启了流量和 WIFI,认证 SDK 会将手机短暂切换到流量上网模式。如果手机没有开启流量,有些 SDK 还会在上次胜利取号之后多缓存一个长期 Token,这样也能胜利实现一次一键登录,不过这个限制性很大。

这里其实还有一个 平安问题

14 登录申请:用户如果轻易造一个认证 Token,而后就向应用服务提交申请,应用服务再向认证服务提交申请,这属于一种跨站攻打。尽管这个 Token 能够被阻止,然而未免浪费资源,给服务端带来压力。

这一点微信第三方利用登录做的比拟好,用户登录前,利用服务端学生成一个随机数,而后利用前端向利用服务端提交时,带着这个随机数,利用服务端能够验证这个随机数。

号码验证场景

除了用于登录,运营商网关的这种取号能力,还能够用在验证手机号上,在某些要害业务上,比方领取过程中,要求用户输出本机手机号码或者其中的某几位,而后通过运营商认证服务验证手机号是否本机号码。

隐衷爱护问题

设施惟一标识问题

当初大家对隐衷问题关注的越来越多了,常常会呈现这种状况:你在某电商网站搜寻了某个商品,而后拜访其它网站时,都向你举荐这类商品的广告。还有一种感觉很恐怖的状况,你刚和某个人议论了某件事,而后就在某个 App 上看到了对于这件事的举荐,有人猜想是 App 在偷听,不过基于目前的舆论和监督,偷听危险太大,这其中的起因可能真的只是算法太厉害了。

最近几年 Android 和 iOS 零碎都对 App 获取手机惟一标识进行了限度,比方 IMEI、Mac 地址、序列号、广告 Id 等,目标就是避免用户的信息在多个 App 之间进行关联,导致透露用户的隐衷,产生一些平安问题和法律危险,前述跨 App 的广告行为也天然受到了克制。

在理解一键登录的技术原理时,看到某运营商提供了一种和 SIM 卡绑定的设施惟一 Id 服务,宣传语就是为了应答挪动操作系统限度拜访手机惟一标识的问题,在现今越来越器重隐衷爱护的前提下,如果这种能力凋谢给了广告平台,就是开历史的倒车了。

手机号作为身份标识的问题

对于国内广泛应用手机号登录的形式,从技术上很难限度 App 之间进行手机号关联,而后综合剖析用户的行为。比方某家大厂经营了多款不同品种的热门 App,它就有能力更全面的理解某个用户,如果要限度可能就得通过法律层面来解决了。至于不同厂商之间的手机号关联行为,基于商业利益的爱护,不太可能会呈现。

在国内这种商业环境下,如果你真的对本人的隐衷很关注,最好只应用账号密码的形式登录,否则常常更换手机号可能是一种没方法的方法。

手机号从新销售问题

手机号的总量是无限的,为了无效利用手机号资源,手机号登记当前,通过一段时间就会被运营商从新销售。如果新的手机号拥有者拿着这个手机号登录某个 APP,而这个手机号之前曾经在这个 App 上注册过,产生了大量的应用记录,那么此手机号前拥有者的隐衷就会被透露。所以大家当初都不太敢轻易更换手机号,因为注册过的中央太多了,留下了数不清的应用痕迹。

在理解一键登录的技术原理时,还看到某运营商提供了一种“手机号更换绑定 SIM 卡告诉”的服务,利用能够据此解绑从新销售的手机号与利用账号之间的关系,从而爱护用户的隐衷。在上文中曾经提过手机卡应用 IMSI 进行标识,如果手机号被从新销售,就会绑定新的 IMSI,运营商能够据此产生告诉。当然运营商还须要排除手机卡更换和携号转网的状况,这些状况下手机号也会绑定新的 IMSI。

不得不说运营商的这个服务还是挺赞的👍。


以上就是本文的次要内容了,因自己满腹经纶,如有错漏,欢送斧正。

播种更多架构常识,请关注微信公众号 萤火架构。原创内容,转载请注明出处。

正文完
 0