QQ 的快速登录原理(BS、CS 混合的单点登录)

作者:vkvi 来源:千一网络(原创) 日期:2017-2-17

如果我们在本机电脑上启动了 QQ,再使用浏览器访问 QQ 邮箱登录页,这个页面会提示我们已经登录了的 QQ。

QQ 快速登录

它是怎么做到的呢?

有人说是控件。控件也许能够实现,但会影响用户体验,QQ 用的是更先进的思路。

QQ 会内置一个小型的 Web Server,提供类似 IIS、Apache 的功能。

访问 QQ 邮箱登录页,这个网页会去访问这个 Web Server,由于是同一台机子访问,所以地址就是:127.0.0.1(实际是 https://localhost.ptlogin2.qq.com:4301/,这个域名指向的是 127.0.0.1,用域名的好处是可以解决 Cookie 跨域等权限问题。),由于这个 Web Server 是 QQ 建立的,所以 QQ 可以根据自己的登录状况给访问者返回对应的信息。

(要验证以上信息:可以用 Chrome 访问 QQ 邮箱登录页,然后按 F12,切换到 Network 标签,从列表中找到 pt_get_uins 开头的,鼠标移上去就可以看到全网址。)

完了?

显然没那么简单,那我的网页也去访问一下,且不是也获取了用户的登录信息和登录凭据?我拿到这个登录凭据是不是我也可以冒名登录?

所以这里面既要防止他人获取我是否已经登录了这种隐私,还要防止他人获取登录凭据。

所以这就要 QQ 邮箱服务器配合,比如可以这样做:

  • 先访问邮箱服务器,邮箱服务器产生一个真随机数,比如 123,并存起来,并将 123 交给浏览器。
  • 浏览器拿到 123 后用这个去访问 127.0.0.1 服务。
  • 127.0.0.1 凭 123 向邮箱服务器询问,123 是否有效?
  • 邮箱服务器说 123 有效,并产生一个凭据 abc,并存起来,并将 abc 交给 127.0.0.1。
  • 127.0.0.1 将 abc 反馈给浏览器,浏览器再凭 abc 去邮箱服务器登录。

为防数据窃听,传输全部是 HTTPS。以上只是一种方式,实际可能是其他方式,也可能更复杂。

你前面那位网友看了:CMS-推荐几个好用的 CMS 系统~ 哪个 CMS 好用等问题

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
标题:必填
内容:
赞助商们
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他