OAuth基本原理
来源:互联网 发布:网络推广部门管理制度 编辑:程序博客网 时间:2024/05/07 15:35
准备用JSON+API的方式来做游味,以减少前后端的耦合。这个思路受启发于douban的API。douban API中讲到了OAuth,于是顺便研究了下,看是不是有必要也支持。
OAuth的产生背景
如果校内希望去提取用户的MSN好友列表,有一种方法是(的确曾经用过,还记得吗?):要求用户在校内的一个导入页面输入用户名密码,然后以用户的角色去访问MSN,获得列表。该方法存在很大的安全隐患:校内能够保证不保存我们的MSN密码么?鬼才信!
为了解决这个问题,OAuth诞生了。
我愿意将OAuth理解成一种协议,它的思路是:
校内可以用一个特殊的ID号去访问MSN好友列表,并且MSN承认这个ID号。
如何获得这个ID号呢?首先校内请求MSN的一个开放地址:
msn.com/oauth/input_password?key=key_xiaonei&callback=xiaonei.com/wait
现在控制权转移到了msn。msn在input_password页面中让用户输入用户名密码以登陆msn(这是安全的,因为input_password页面位于msn站点内,校内无法控制)
成功登陆msn后(如果不成功呢?说明非法呗!),msn会对key校内进行签名得到一个key_public_msn,然后把这个key_public_msn传给xiaonei:
xiaonei.com/wait?key=key_public_msn
从此以后,校内用key_public_msn来访问msn即可,msn肯定会承认key_public_msn。
以上只是一个最简单的思路,真正的OAuth认证要略微复杂一些,主要是为了防止攻击。防攻击的方式有两种:
1、附加随机数。增加猜解难度
2、timestamp。就算猜到,稍后也会过期。
OAUTH标准提出到现在不到两年,但取得了很大成功。不仅提供了各种语言的版本库,甚至Google,Yahoo,Microsoft等等互联网大头都实现了OAUTH协议。由于OAUTH的client包有很多,所以我们就没有必要在去自己写,避免重复造轮子,直接拿过来用就行了。[2]
暂时我并没有打算让第三方来访问游味的数据,所以OAuth的支持则不是十分必要了。不过,倒是可以利用OAuth来获得其它网站的数据。例如,校内或豆瓣用户注册游味的时候,可以通过OAuth来获取该用户已有的注册信息,直接导入到游味即可,免去了用户注册的烦恼。
参考文献:
[1] http://kejibo.com/oauth/
[2] http://blog.csdn.net/hereweare2009/archive/2009/03/08/3968582.aspx
- OAuth基本原理
- OAuth
- OAuth
- OAUTH
- oauth
- oAuth
- oAuth
- OAUTH
- oAuth
- oAuth
- OAuth
- OAuth
- OAUTH
- oAuth
- OAuth
- OAuth
- OAuth
- OAuth
- 关于VS2008 C4995警告
- GPS/GIS开发总结(C++/C# )
- Java IO 读写文件
- 如何获得android系统的读写权限
- Javascript访问windowMediaPlayer编写的播放功能(简单示范)
- OAuth基本原理
- 驱动和GUI通信时容易卸载驱动时出现的错误?
- 堆和栈的区别
- ArcSDE 服务详解
- c#2003连接unix服务器上的oracle7
- 收到的XML转成dataset型
- 调用WebServices接口实现短信收发
- linux 下编译ACE5.7.5
- MFC程序和Win32程序的关系