OpenUser 数字身份识别协议

授权

OpenUser 由 喻恒春 创作,采用
知识共享 署名 3.0 未本地化版本 许可协议 进行许可。
知识共享许可协议

历史

此文最早发表在我的 老博客。原文章只是笼统的想法。博客彻底转到 OSC。准备继续探讨这个话题。文章内容会不断完善修正。

简述

数字身份识别框架已经有了大名鼎鼎的OpenID,更有Mozilla推出的BrowserID 都是流行的数字身份识别系统,这两个有什么不好么?没有!这两个没有任何问题,这两个工作的都很好,非常优秀。使用者总是要求的多,总是希望

  • 更易部署:无须授权完成任意登录(ASO: Any Sign On)
  • 更低资源:无需服务器端部署就可以开启工作
  • 保障服务:基于固定的协议,同类型服务一致的数据结构
  • 必须安全:没有更,安全就是安全。不过很明显绝对的安全是不存在的。
  • 多方友好:协议细节将体现多方友好

OpenUser(以后简称OU) 试图达到这些需求。

技术概述

  • 通讯平台:通过客户端进行。
  • 可验证ID:用户登录名也就是用户登录ID应该具有可验证性。
  • 加密登录:包括登录ID,密码都要采用不可逆加密传输。
  • 任意登录:支持 OU 的站点通过简化注册或者第三方授权过程,让用户跟方便的登录
  • 站点验证:因多方通讯产生的需要验证多方有效性。

通讯平台

通讯可能涉及三方:终端用户和两个服务提供方。典型的客户端就是浏览器。

可验证ID

当用户需要找回密码的时候,用户ID可以提供可验证性。最简单的用户ID就是 email

加密登录

用户输入的是非加密信息,这些信息要经不可逆加密后才传送给服务器端。
举例采用MD5加密信息。
向服务器传送:

md5(登录ID)
md5(md5(密码) + token)

token是服务器端在会话中分配给客户端的一个字符串。此字符串保存在cookie中,随提交发送至服务器。

服务器端验证:
很明显,服务器端需要保存的登录ID和密码都是是 md5 后的。然后通过 md5(登录ID) 匹配到用户数据,根据已保存的 md5(密码) 和 cookie 中的 token 来验证提交的 md5(md5(密码) + token) 是否正确。
当然如果 token 不保存在 cookie 中,而作为参数提交也不影响安全性。
现实实现中 token 可以设计成带过期验证的,这个由实现决定。

任意登录

任意登录对应目前常见的第三方授权登录。不同的是,由于 OU 设计中服务器端保存的是不可逆加密的登录ID和密码。所以授权方可以直接传递给服务器接受方,不可逆数据本身已经提供了安全保障。也许还有不可逆加密算法名称,除了MD5外还有其他算法。这种方式下,授权方已经不再履行授权的角色,履行的是用户注册有效性无责任担保角色。通过后用户信息被直接转移了。

站点验证

  • 由任意登录造成的对授权方合法性验证,这需要在服务端进行。(待完善)

你可能感兴趣的:(安全,OpenID,OpenUser,BrowserID)