手机号一键登录如何实现(android手机号一键登录)

【手机号一键登录如何实现(android手机号一键登录)】分享给互联网从爱好者学习参考。

手机一键登录是最近两三年出现的一种新型应用登录模式,比之前常用的短信验证码登录方便很多。登录时,应用程序首先向用户显示带有本地号码掩码的授权登录页面。用户点击“同意授权”按钮后,应用可以获得完整的本地号码,从而完成用户的登录认证。在这个过程中,只要确认登录使用的手机号码是在与该号码绑定的手机上发起的,就可以成功认证应用。从这个角度来说,它和短信验证码登录没有本质区别,都是一种设备认证登录方式。本文将探索技术门道。

近年来,为了保护用户的隐私和安全,Android和iOS系统限制了应用程序获取本地电话号码的能力。即使通过某种技术手段获取了本地电话号码,这个号码仍然可能被篡改,所以应用程序直接读取本地电话号码进行登录是不可行的。那么这些应用是如何获得真实的本地号码的呢?答案是电信运营商。如果手机需要打电话、上网、充电,运营商必须能够对应正确的手机号码。国内的运营商是中国移动、中国联通、中国电信,都开放了这个能力。对于在互联网大潮中已经管道化的运营商来说,是一个非常有意义和积极的进步。

手机流量上网原理手机号一键登录是借助手机流量上网实现的,所以首先要了解手机流量上网原理。

目前网上有很多关于一键登录的技术文章,但内容基本相同。至于关于获取手机号的部分,都是通过运营商的数据网关能力,含糊不清,让追的技术人员难以忍受。本章将介绍这种从数据网关获取手机号码的能力是如何实现的。因为通信的专业知识很复杂,而且我也没有专业学过,大家也不希望接触很多专业术语,所以这里只保留一些关键的专业术语,尽量用通俗易懂的方式把这个机制讲清楚。

五层网络模型熟悉网络的同学应该知道五层协议,那么手机流量在线时五层网络模型有什么区别呢?

从上图可以看出,手机流量上网的数据链路层和物理层的主要区别。在数据链路层,互联网流量没有MAC地址的概念。它采用点对点协议(PPP),手机通过拨号建立这个PPP连接,然后发送数据。在物理层,通过手机内置的基带模块对无线信号进行调制解调,实现与移动基站的电磁波通信。

互联网点对点协议接入机制支持认证功能。手机发起连接时会携带自己的标识,一般是手机卡内置的IMSI。该IMSI也将存储在运营商的数据库中,因此基站可以验证连接用户的身份。当然,这个验证过程并不是简单的比较IMSI,还会有更多的安全机制。为了更好的理解流量上网的机理,这里再来一个4G流量上网时手机和运营商交互的示意图:核心手机:其中手机卡和基带模块是流量冲浪的关键。IMSI,全称国际移动用户识别号,存储在手机卡中。IMSI的身份是手机卡。

基站:就是外面常见的铁架信号塔。这是一个能在一定范围内发送和接收信息的电台。手机会接入它,然后它通过光纤接入运营商网络,实现移动通信。

MME:移动性管理实体,移动性控制单元。手机建立连接时,会先访问这里,负责:手机与基站之间的访问控制、手机卡的认证、会话管理、安全传输、漫游控制、跨运营商通信等。

HSS:归属订户服务器,属于订户服务器。保存本地签约的手机卡信息,包括手机卡IMSI与手机号码的对应关系、手机号码的套餐信息、手机号码的归属地信息等。

服务网关。4G环境下,用户端与运营商核心网之间的服务网关。能不能准入,能办什么业务,在哪里办业务都在这里控制。跨运营商计费、漫游计费等。也在这里完成。

PDN网关,PDN网关。运营商核心网与互联网之间的网关,通过它手机才能真正上网。它会给手机分配一个IP地址,控制上网速度,收取流量。

Pcrf:策略和计费规则功能,策略和计费控制单元,存储每个用户的网络接入策略和计费规则。

为了便于理解,上网的过程大致分为两部分(对应上图中的1和2):1.接入:连接建立后,手机携带IMSI信息,通过基站接入MME。MME通过HSS验证IMSI信息,然后MME进行一些初始化工作,返回一些认证参数给手机,手机进行一些计算,然后返回计算结果给MME,MME验证手机的计算结果,然后允许接入。这个过程确保了访问的安全性。MME还为后续数据传输提供加密传输支持,保护数据不被窃听和篡改。有兴趣的同学可以多了解一下。如果手机卡卖的时候没有写手机号,那么第一次注册手机卡的时候,运营商会从HSS中取出手机号,然后写入手机卡。在实践中,为了防止跟踪和攻击,没有必要在每次通信中都携带IMSI。MME会生成一个与IMSI对应的临时GUTI,就像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保持不变。一键登录原理了解手机流量上网原理。我们来看看接下来的一键登录业务是如何实现的。这部分属于上层应用开发,大家应该相对比较熟悉。

如果你已经接入了微信的第三方应用登录,或者其他类似的第三方应用登录,流程都差不多。先来看图:

以下是一些关键步骤:

2预取手机号码掩码:这个手机号码掩码需要在请求用户授权的页面上显示给用户。通过电信运营商的网络获取这些信息可能会很慢。为了提高用户体验,可以在应用启动时获取,然后缓存一段时间。8授权请求:由于应用获取用户手机号码比较敏感,必须用户清楚了解并授权后才能进行。为了确保这一点,运营商的身份验证SDK提供了这个授权请求页面。用户确认授权后,SDK直接向运营商的认证服务发起认证请求,认证服务会向应用返回一个认证令牌。然后应用拿着这个令牌通过自己的服务器找到运营商获取手机号。17生成应用授权令牌:应用需要维护自己用户的登录状态。这里可以使用传统的会话机制或JWT机制。3预取手机号码掩码和11请求认证都需要通过手机蜂窝网络进行通信,也就是说你需要通过手机流量上网。如果手机同时开启了流量和WIFI,认证SDK会将手机短暂切换到流量上网模式。如果手机不开流量,有些SDK会在最后一次成功取号后缓存一个临时令牌,也可以成功实现一键登录,但这是很有限制性的。

实际上,这里还有另一个安全问题:

14登录请求:如果用户随机创建一个认证令牌,然后向应用服务提交请求,应用服务又向认证服务提交请求,这就是跨站攻击。虽然这个令牌可以被屏蔽,但是必然会浪费资源,给服务器造成压力。

微信的这个第三方应用登录比较好。在用户登录之前,应用服务器生成一个随机数,然后当应用前端提交给应用服务器的时候,应用服务器就可以用这个随机数来验证这个随机数。

数字验证场景

除了登录之外,运营商网关的这种号码检索能力还可以用于验证手机号码。在一些关键业务中,比如支付过程中,需要用户输入本地手机号码或其中的一部分,然后由运营商认证服务验证手机号码是否是本地的。

隐私保护,设备的唯一标识。如今,人们越来越重视隐私问题。经常会出现这种情况:当你在一个电子商务网站上搜索一个产品,然后访问其他网站时,有人推荐你为这种产品做广告。还有一种情况感觉很恐怖。你刚和人聊了一件事,然后你在一个App上看到了关于这件事的推荐。一些人猜测该应用程序在窃听。但基于目前的舆论和监督,窃听风险太大。之所以会这样,可能真的是算法太厉害了。

近年来,Android和iOS系统都限制了应用程序对唯一手机标识的访问,如IMEI、Mac地址、序列号、广告id等。目的是防止用户的信息在多个app之间产生关联,造成用户隐私的泄露以及一些安全问题和法律风险。前面提到的跨app广告行为自然被打压了。

在了解一键登录的技术原理时,看到某运营商为绑定SIM卡的设备提供唯一Id服务。口号是处理手机操作系统限制访问手机唯一标识的问题。在如今越来越重视隐私保护的前提下,如果将这种能力开放给广告平台,那将是一个历史的逆转。

手机号作为身份的问题。由于手机号登录方式在国内被广泛使用,限制手机号在app之间的关联,进而综合分析用户的行为,在技术上有一定难度。比如一个大厂运营着各种不同种类的热门app,就有能力更全面的了解某个用户。如果要限制的话,可能要通过法律层面来解决。至于不同厂商之间的手机号关联行为,不太可能出现基于商业利益的保护。

在这种国内商业环境下,如果你真的很在意自己的隐私,最好只用账号密码登录。否则频繁更换手机号码可能是一种无奈的办法。

手机号码总数有限。为了有效利用手机号码资源,手机号码注销后,会在一段时间后被运营商转售。如果一个新手机号的机主用这个手机号登录了一个App,而这个手机号之前已经在这个APP上注册过,导致大量的使用记录,那么这个手机号的前机主的隐私就会被泄露。所以现在大家都不敢随便换手机号了,因为注册地太多,留下无数使用痕迹。

在了解一键登录的技术原理时,我们还可以看到,某运营商提供了一项“手机号码变更绑定SIM卡通知”的服务,应用可以根据这项服务解绑重新出售的手机号码与应用账号之间的关系,从而保护用户的隐私。如上所述,手机卡是由IMSI识别的。如果手机号被转卖,会绑定一个新的IMSI,运营商可以据此生成通知。当然,运营商也需要排除更换手机卡和携号转网的情况。在这些情况下,新的IMSI将与手机号码绑定。

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


这是这篇文章的主要内容,因为我不是知识渊博。如有错漏,请指正。

手机号一键登录如何实现(android手机号一键登录)