准备用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
分享到:
相关推荐
详细讲解OAuth2.0的基本原理及其应用,希望与大家一起交流,共同进步。
描述了oauth2的原理(不含代码,如需demo请联系3546766954@qq.com),简单介绍了oauth2四种验证方式
oAuth基本原理 接入QQ登录前置条件 申请AppID 和Appkey 登录QQ互联申请网站应用或移动应用接入 按照步骤申请成功后,创建应用即可看到对应的AppId和AppKey 引入官方SDK 添加测试回调地址 1、在本地添加一个虚拟主机...
那么我就可以利用OWIN实现OAuth 2.0 之客户端模式的基本原理生成一个token,你会发现我这个token居然能够访问你们公司的资源服务。所以如果我们使用OWIN实现OAuth 2.0 之客户端模式,尽量保证两点: (1)增加...
Spring-Security-OAuth2 Spring Security OAuth2 四中基本模式 authcode-server 授权码模式 client-server 客户端模式 ...Spring Security OAuth2 四中基本原理 Spring Security OAuth2 四中授权类型选择
就像我提到的那样,我现在添加了一个演示-仅填写详细信息,您将对它的工作原理有基本的了解。Oauth如何工作? 用户授权应用程序后,Discord会将代码发送到Rediect URI。 此脚本位于您的Reirect URI文件夹中,它将...
对于框架基本原始码的学习,需要反复,认真思考,并做到温故而知新,这样才能将原理吸收得更加牢固。 框架包括: :check_mark_button: Spring源码 :check_mark_button: SpringBoot源码 :check_mark_button: ...
实战篇(第2~8章),详细讲解了TCP、UDP、HTTP等基本网络协议在Android上的应用,展示了使用Android处理JSON、SOAP、HTML、XML等数据的方法,讲解了Android中的RSS编程、Email编程、OAuth认证等,解析了Android中...
垂直化的搜索引擎在分布式系统中的使用,包括搜索引擎的基本原理、Lucene详细的使用介绍,以及基于Lucene的开源搜索引擎工具Solr的使用。 2.1 分布式缓存 60 2.1.1 memcache简介及安装 60 2.1.2 memcache ...
3、此系统对微信接口实现了细致的梳理,并且类库也是反复斟酌后建立的,可用于多用户平台,也便于未接触微信的开发者快速的建立概念,了解原理。 4、微信核心分为:主动响应和被动响应,在ActiveResponse.aspx有...
基本原理 使用 github API 搜索旧要点并不总是很好。 将它们放在本地用于索引等可能会很好。 实用程序pull.py从命令行或 OSX Keyring 接收 github x-oauth-basic令牌,然后检索所有指定的用户 gist,包括公共和私有...
微信开放平台接入Demo 需要注意的: 公众帐号升级为服务号能使用更多的微信js api ...var OAuth = wechatWrap.OAuth; var API = wechatWrap.API; var wechat = new wechatWrap(); var config = { token: "na
本指南假定您已经安装了Vault,并且对Vault的工作原理有基本的了解。 否则,请先阅读有关如何。 如果您只想将此插件与Vault一起使用,则将其与Vault打包在一起,并且默认情况下可以通过运行以下命令启用: $ ...
3.3 消息交互原理分析 24 第4章 基础接口 28 4.1 接收用户消息 28 4.1.1 接收文本消息 28 4.1.2 接收图片消息 28 4.1.3 接收语音消息 29 4.1.4 接收视频消息 30 4.1.5 接收地理位置消息 30 4.1.6 接收链接...
3.3 消息交互原理分析 24 第4章 基础接口 28 4.1 接收用户消息 28 4.1.1 接收文本消息 28 4.1.2 接收图片消息 28 4.1.3 接收语音消息 29 4.1.4 接收视频消息 30 4.1.5 接收地理位置消息 30 4.1.6 接收链接...
6.3 OAuth2.0网页授权 134 6.3.1 配置网页授权回调域名 135 6.3.2 网页授权流程 135 6.3.3 方法封装 139 6.3.4 案例:通过网页授权获取用户信息 145 6.4 生成带参数二维码 149 6.4.1 创建临时...
2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...
2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...
基本控件及基本动画效果dem 2011android面试题目及其答案大全.rar Android面试题集锦 (陆续更新)(最新2012-6-18) 【eoeAndroid Android相关的面试题最强汇总】 ZTE—adroid笔试题附答案版 iceskysl: 说说我招聘...