黑米说 SSO - 那么多项目都用一个用户体系该多好
你要悄悄努力,然后惊艳所有人
如果不是在做 SSO 首页网页设计的时候去回顾了之前做过的所有独立项目,我真的都没想过我从大学毕业工作到现在的这 9 年里竟然做了这么多大大小小的项目。
以往都是在瞎搞,这次虽然也一样。
但这一次就想把之前做过的项目做一做改造,能用的用起来,然后把用户体系统一了。于是,做 黑米说 SSO
的想法就这样的回到了这里。
传送门:黑米说 SSO
“登录”可以玩出什么花
在大多数的网站/论坛或者程序里面,都会有一个独立的模块,用来管理它的用户。一般情况下如果项目不大,我们都会以一个模块的形式来开发。但是如果在某些情况下(比如说一个公司内部的多个系统)如果一个人只维护一套用户体系登录所有的系统或者网站的话,是一个非常省心的管理体系了。
现在主流的非独立的登录大概是有两种玩法,一种叫做“SSO”(单点登录),另一种叫做“oAuth”(授权登录)。
SSO 到底是个什么玩意
SSO(单点登录)是基于上面的理论设计出的一个“只登录一次”就可以访问所有互信的系统。可以通过将用户认证信息使用 cookie 种在主域名下,然后在任何的子域下都可以通用认证信息,十分省事。
不过这也是它的缺点:只适合网站项目。
oAuth 又是个什么
oAuth 实际上是一个授权协议,基于这个协议可以在每个完全不同的项目(域名可以不同,甚至可以不是网站性质的项目)中使用同一套用户体系。我们在互联网上可以用到的一些“统一登录”的网站是使用的这个协议。
比如说我们甚至可以把自己开发的程序绑定微信进行扫码登录,这种“第三方”也大概率使用的是 oAuth 协议。
黑米说 SSO 是 SSO 还是 oAuth?
都是。
我的实际设计是把新开发的系统(可以基于 SSO)的使用一次登录来完成,老系统的改造使用 oAuth 授权登录或注册。
黑米说 SSO 的 oAuth 部分采用的是 oAuth2.0 协议,对接系统只需要在后端 RESTful 一个接口和处理一个 302 即可完成对接,后面在黑米说 SSO 里公布的开发文档将会详细的说明如何对接。
在这个用户体系里有什么功能?
首先是绑定了手机号或者邮箱的使用者(或称“用户”)可以使用用户名、手机号和电子邮箱来完成登录操作。
如果使用者是从某一个使用了黑米说 SSO 的网站中登录的,那么会同时登录黑米说 SSO 和这个网站。黑米说新开发系统就不需要再登录了,而使用 oAuth 的系统也只需要点击“一键授权”就可以直接注册登录到这个系统。
在黑米说体系中的所有网站或软件中的用户是需要通过实名认证才能够发表作品(图文、乐谱、软件等)的。黑米说 SSO 在数据库中加密存储了所有有价值的敏感信息,即便被“脱裤”(如过被脱裤也是阿里云数据库安全的锅)对于其他人也没有实际意义。黑米说 SSO 在数据传输过程中是使用数字签名验真请求来源的,我们设计了复杂且定期更换的签名算法,保证了数据传输过程中的安全。
因此实名认证也不必一次次的在系统中多次单独在软件或者网站里处理,使用黑米说 SSO 的系统无论是使用单点登录还是 oAuth,都可以不必在各自的系统中存储实名信息。只要经过 RESTful 授权的验证,是可以通过一串具有独立性的代码来获取到使用的实名信息,最大程度上保护了使用者的隐私。
目前黑米说 SSO 处于公测阶段,主要是还有一些数据传输和 UX 设计的问题正在被解决。也非常欢迎和感谢各位开发者帮忙捉虫。
啰嗦两句
这是一个开始,我希望当这套体系在技术架构和代码层面能够做得比较“能见人”了以后在把它整理开源到 Github 上。
于此同时,黑米说有了新 Logo,来自域名 mitkimi.com 中除去 [.com] 以外出现过两次的字母 m。
至于为什么用出现两次呢?我想凡事都不见得要争第一,也不见的做唯一。当第二虽然没有第一过瘾,但是也很了不起。
所以我给自己定了一个小目标:先争第二。