一种无需密码的开放协议登录方式
后来出现了 OAuth 登录方式,但这种方式是一种中心化的登录方式,中心平台决定了用户信息的提供,比如微信决定给开发者提供什么样的权限,而且随时可以以各种借口屏蔽、限制开发者或用户的账号,从而造成服务的中断。
这就使得用了 OAuth 登录的网站或 APP 为了双层保障又让用户重新填写提供邮箱、手机和密码。
于是,我在思考,有没有一个更好的方式来解决这个问题。
受到比特币去中心化方式的启发,我们都知道比特币最重要的是它的开放协议,不同的客户端有不同的实现方式,但它们都遵守同一协议,它们就可以实现通信。
所以,我就在想,我们是否能实现一个这样的标准化登录协议,接入协议的无论是网站、开发者、用户,就能实现统一的登录方式,因为是开放的协议,所以就不再受制于任何一个平台。
具体实现:
1,用户要登录网站时,网站生成一个登录码(其实是一个 api 接口),任何实现了登录协议的客户端收到接口后都可以向接口发送加密数据(包括登录、授权信息读取、退出、永久注销等等功能)。
2,本地客户端收到登录码后从本地选择一个账户或生成一个新的账户私钥,通过一定的方式生成加密数据发送给网站,网站收到数据后解析出公钥、登录有效时间等信息完成登录。
3,各个网站的登录私钥、以统一的格式保存在本地客户端。
4,用户可以随时加密导出私钥数据包,导入到其他客户端。
———————————————————————————
整个登录过程,用户不再需要提供密码,各个网站的登录信息,用户自行保管。
我们唯一需要留意的是客户端的安全,通过社区开源、社区鉴别等方式能让用户自由选择一个安全可信赖的客户端。
而且,因为是去中心化的,即使某个用户的终端被黑客攻破,不会对其他用户产生影响,不会出现大面积的数据泄露的情况。