如何确认唯一的客户端


#1

突然间想到的一个问题,想设计一个功能就是,新建的账号第一次登录时候,确定这个客户端,该账号只能通过这个客户端登录,其他客户端全部die掉(不能用这个账号再登录,有点像外服游戏的引继码功能)。除了获取IP外还有什么办法证明是这个客户端呢。

PS:引继码是啥可以百度一下,我怕越解释越乱。。。。。。感觉这个功能还是很好玩的,不过C/S较多。

@JasonBai007 @silentdepth 呼叫大神求助


#2

好像专业术语是:单点登录
这个没有做过,感觉好像可以问后端,另外,期待楼上的silent大神的回复


#3

好的,谢谢大神了,我去了解一下单点登录


#4

SSO(单点登录)和引继码应该不是一个东西……如果我对引继码没有理解错的话。

首先 IP 是不可靠的,特别是 IPv4 地址。以及要看你想做到什么程度,如果只是要实现一个临时身份标识系统,对持久化储存没什么要求的话,生成一串随机编号扔浏览器本地就行了。

如果就是想(物理)锁定客户端,那纯 JS 就没办法了,需要 B/S 协同工作,B 端负责收集数据,S 端负责收集更多数据+分析数据——然后你就实现了 Google 账号异常活动监测系统 :joy:


#5

大神,B端是啥意思?S端是啥意思?
既然IPv4不可靠,前端页面通过浏览器能拿到唯一标识符吗?唯一标识某台电脑的记号。


#6

C/S:Client/Server
B/S:Browser/Server

纯 JS 获得客户端唯一标识符很难,因为 JS 有沙盒,没法直接获取到(大部分)硬件信息,而软件信息的唯一性不足。


#7

豁然开朗,膜拜大神,您的回复用语非常专业,好厉害。受教了[抱拳]


#8

目前我能做的只是在第一次登录的时候生成一个随机数存入 localStorage或者 indexDB,之后再次登录去检测这个数,success就再次生成随机数存储,error就不能登录。

https://www.jb51.net/article/45129.htm

也想过获取硬件信息,但是客户端浏览器安全设置要做更改,不现实。
至于Google 账号异常活动监测系统 ,完全没找到咋实现的~( ̄▽ ̄)~*。谢谢大神们的点拨啦,我再继续想想,研究一下这个,还是蛮感兴趣的。
PS:对了,如果有了这个功能的话,再加单点登录还有意义吗


#9

Google 的机制细节肯定不会公开告诉你,那属于人家的企业机密了。但大体的思路就是那样,收集一切可收集的信息(甚至如用户屏幕分辨率这样的信息),然后加上权重进行分析。

单点登录解决的是另一个问题(单次登录行为验证多个域)。在事件发生顺序上,你要解决的这个问题发生在登录过程之前,二者可以结合实现特定效果,但互不干涉。


#10

原来如此,之前对单点登录的理解错了,刚刚学习了一下,受教了,谢谢大神


#11

用JS获取mac地址然后mac地址和账号做一个绑定存在数据库不就实现了吗


#12

原来如此,之前只关注IP地址了,因为可以随便改动就没再想。mac的话更换频率小一点。谢谢提醒


#13

JS 咋获得 MAC 地址?


#14

我是打算使用php加js同时工作完成,目前还在测试,最近有点忙就把这个问题耽搁了。