1

第0篇
第1篇
第2篇
第3篇

这个小网站我最想玩的一个功能就是oauth,有几个原因:
第一个,之前有一年在做mobile connect的项目,对这玩意儿接触的很多,我们当时做的mobile connect是基于openID的,也是使用的springboot 的oauth那一套东西

第二个,对每个网站都要求注册账号 密码是非常的无语。很多专业的项目用户密码的确是做了secure的保护的,但是再secure,谁能保证每个网站都专业的管理用户数据?我常用的密码估计早就泄露了不知道多少次了,于是后面注册账号都用不同的密码,以至于必须用一个小本本来记录密码,虽然大部分网站都提供了密码找回功能,但是也是很痛苦的

oauth确实是为这个问题提供了一个解决之道。

oauth是什么,说简单,就是一个保存你身份信息的网站(没办法,这个网站你多半还是要输入一个密码),比如qq授权,你的登录oicq的时候还是要输入密码的。
这个保存你身份信息的网站,在获得你授权以后,可以让第三方的网站通过这个身份信息去做一些事情。

oauth包括两大块,一个叫做授权,一个叫做认证。

认证就是只是需要你的身份,最重要的作用就是登录,比如微信登录,qq登录,这样你在第三方网站上是不是就不需要注册一个账号了

授权是授权给第三方网站在你授权的网站上做点事情,比如你授权给京东在你支付宝账户上扣钱

目前主要的认证有以下方式

  1. mobile connect,就是给你手机发一个短信,你填一个验证码,或者给你手机发一个授权的东西,你点一下
  2. 邮箱认证,给你邮箱发一个链接,你去点一下
  3. 各大oauth提供商,微信,qq,新浪微博,支付宝,谷歌,百度等

对于oauth的技术细节这块还是相对比较熟悉的,自己使用springboot的RestTemplate尝试着实现一下应该也是挺有意思的事情。

要使用oauth,第一步你作为第三方网站,需要在oauth提供商上注册,他会给你一个clientID和clientSecret, 然后把你的网站处理oauth的请求告诉这个oauth提供商

于是我在微信开发者平台上提交了如下申请

Screenshot from 2020-05-12 18-11-02.png

第一次申请失败了,因为微信信息开放平台信息收集表里面的签名必须手写,我用家里打印机打印了一份然后手机拍照,第二次申请成功了,然后就无语了
注册成功了,clientID和clientSecret都有了
本来可以兴致冲冲开始玩了,结果悲剧了,注册网站只是第一步,微信还要求你开通接口才能微信登录

Screenshot from 2020-05-12 18-13-59.png

注意看,网站审核通过了,但是接口并没有开通,怎么才能开通呢
要先去做开发者资质认证,审核费用300人民币

我想着300就300吧,于是去注册,然后就被卡住了
Screenshot from 2020-05-12 18-15-39.png

这里的类型并没有个人,就是说申请开发者资质认证最基础的条件就是你要去工商局先注册一下公司。这个就玩大了。贼失望。

我没去尝试支付宝等其他方案,我做的比赛网站,你让人家微信登录还好,你要人家支付宝扫码,总感觉不太妥当,微博 tap什么的也不是每个人都有
考虑到邮箱认证,你让比赛选手用我这个网站每次都要去邮箱点一下这也不太妥当。
短信认真我还得去找ISP

于是头大,说真心话,我真的不想别人在我网站上登录让我保存密码,我一个小破网站没办法保护大家的密码啊。但没有登录,有一些基本的secrity功能也不好实现,比如我需要让有管理员权限的人才能修改比分

最后可能只能用用户名 密码来实现了,到时候加一个大大的提示,不要在我的网站用敏感密码


jassen
7 声望0 粉丝

十年java小菜鸟