(1)什么是Oauth?
Oauth是一个开放的认证协议,让你可以在Web或桌面程序中使用简单而标准的,安全的API认证。
同时,任何第三方都可以使用Oauth认证服务,任何服务提供商都可以实现自身的Oauth认证服务,因而Oauth是开放的。
业界提供了Oauth的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而Oauth是简易的。
互联网很多服务如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了Oauth认证服务,这些都足以说明Oauth标准逐渐成为开放资源授权的标准。
(2)我们为什么要用Oauth?
网络开放是一个不变的趋势,那么不可避免的会有各种网络服务间分享内容的需要。
举个我们身边例子吧:比如某个公司做了一个应用,想要调用QQ邮箱的联系人列表,现在的方法是你需要在他们应用里输入你的QQ号,QQ密码才能调用,
虽然他们都自谓“不保留QQ用户名和密码”,但是你们相信吗?我们信息已经暴漏给这家公司了,又有谁知道他们到底用没用我们的信息进行一些我们所不允许的事情呢?
OAuth就是为了解决这个问题而诞生的,当我们访问某个公司应用,再调用QQ邮箱的联系人列表,不再提交你的用户名,密码到他们公司而是提交到腾讯公司的服务器。
这样好处自己是安全,而且不会泄露你的隐私给不信任的一方。
再说一个典型案例:
如果一个用户拥有两项服务:一项服务是图片在线存储服务A,另一个是图片在线打印服务B。如
下图所示。由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,
假设这两个用户名各不相同,密码也各不相同。当用户要使用服务B打印存储在服务A上的图片时,用户该如何处理?
法一:用户可能先将待打印的图片从服务A上下载下来并上传到服务B上打印,这种方式安全但处理比较繁琐,效率低下;
法二:用户将在服务A上注册的用户名与密码提供给服务B,服务B使用用户的帐号再去服务A处下载待打印的图片,这种方式效率是提高了,但是安全性大大降低了,服务B
以使用用户的用户名与密码去服务A上查看甚至篡改用户的资源。
很多公司和个人都尝试解决这类问题,包括Google、Yahoo、Microsoft,这也促使OAUTH项目组的产生。
OAuth是由Blaine Cook、Chris Messina、Larry Halff 及David Recordon共同发起的,目的在于为API访问授权提供一个开放的标准。
(3)Oauth中角色
1.ServiceProvider(服务提供商)
ServiceProvider通常是网站,在这些网站中保存着用户的一些受限制的资源,例如图片共享网站,博客或者微博系统等。
这些网站通常是使用用户名和密码来确认用户的身份。一方面负责验证用户身份,另一方面保存用户信息。
在我们要开发的腾讯微博客户端的服务提供商就是腾讯开放平台。
2.User(用户)
持有登录网站的用户名、密码,并在网站上保存了一些信息,例如照片等.用户不希望把这些私人信息公开,但是用户却需要将这些信息
共享给其他网站。我们有时却希望能够被另一个应用程序访问。
3.Consumer(客户)
希望访问用户私人信息的应用程序,可以是web应用程序,桌面应用程序或者手机应用程序。Consumer需要授权后才能访问相应资源。
我们所开发的应用程序就是Consumer.我们的应用程序是希望能够访问用户的私人信息的,但是我们又不能够得到用户的用户名和密码,那这个中间就有一个
授权的过程。
4.ProtectedResources
被保护的资源。
(4)Oauth验证流程
对于Consumer来讲他无法得到用户的用户名和密码,那他怎么才能得到用户的某些私人信息呢?基本流程如下:
第一步:某个用户想使用我们创造的应用程序。他无法得到用户的用户名和密码,所以不能直接使用用户的信息。
第二步:Consumer就会向Service Provider请求访问用户的资源。
第三步:Service Provider 就会向用户询问是否可以同意Consumer访问用户的资源。
第四步:如果同意,用户就告诉Service Provider向Consumer授权访问。
第五步:Consumer获的授权。
第六步:Consumer就会服务该用户。Consumer就会向Service Provider取得该用户的一些信息,显示给该用户。
(5)Oauth验证过程
第一步:首先是我们的应用程序也就是Consumer向Service Provider请求一个Token(令牌),然后Service Provider会提供我们一个请求令牌。
第二步:将用户的页面定向到一个验证页面,这个页面不是我们Consumer提供的页面,而是由Service Provider提供的,在我们这就是腾讯提供的验证页面。
在这里输入你的用户名和密码来验证你的身份。从这可以看出用户提交的用户名和密码并没有提交给我们编写的Consumer,而是提交给了ServiceProvider即腾讯。
这样就能保证用户的用户名和密码不会泄露,不会让第三方知道。
第三步:由Service验证用户输入的用户名和密码是否正确,如果正确就提示登陆成功。
第四步:登陆成功之后再把这个页面重定向到我们自己的页面上。Service就会通知Consumer该用户没问题,同时会分配Consumer一个授权过后的令牌。
第五步:Consumer通过这个授权之后的令牌来换取一个访问令牌,得到这个访问令牌之后我们的验证就结束了。
第六步:通过这个访问令牌就可以访问该用户的私人信息了。
从上面的步骤可以看出,用户始终没有将其用户名与密码等信息提供给使用者(第三方软件),从而更安全。
分享到:
相关推荐
腾讯微博android 客户端 Oauth 认证流程序示例
android 腾讯微博Oauth2.0认证以及自定义webview认证
1、腾讯微博SDK OAuth1.0 2、QQ登陆SDK OAuth1.0 & OAuth2.0 3、新浪微博SDK OAuth1.0 & OAuth2.0 4、开心网API OAuth1.0 & OAuth2.0 5、搜狐微博 OAuth1.0 6、网易微博 OAuth1.0 7、人人网SDK OAuth2.0 8、...
android新浪微博开发源码 oauth。
OAuth认证 可以用的腾讯微博OAuth认证
RT,基于OAUTH2.0的腾讯微博认证以及发送微博,代码简洁易懂,方便童鞋们开发需要用到分享信息到腾讯微博功能的应用,具体教程可留意我的CSDN博客http://blog.csdn.net/geniuseoe2012
1.腾讯微博Android客户端开发——OAuth认证学习.pdf 1.腾讯微博Android客户端开发——OAuth认证学习.pdf
3./class/下,文件名中含有If的文件,定义的是接口.总计3个接口文件:各个网站的api访问路径...5.实例中2个网站(新浪微博和腾讯微博)的OAuth已经实现,并且通过验证。本例中的OAuth客户端来源于新浪微博OAuth认证SDK。
腾讯微博Android客户端开发OAuth认证学习[收集].pdf
腾讯微博Android客户端开发——OAuth认证学习,课程下载地址:http://blog.csdn.net/coolszy
【第三方开放平台系列】腾讯微博Oauth2.0授权认证-源码
Android版新浪、网易、腾讯、搜狐微博OAuth认证实例集,想更多了解OAuth认证的朋友,请下载java源码包,在示例中完整解析了OAuth认证的过程:定义URL编码方式,请求url,得到注册应用后服务商提供的key和secret,...
实现了Oauth2.0授权逻辑 授权 登陆 发表 图片 gps
目前线上资源较少关于jmeter实现oauth1.0请求的方法,系统接口通过Oauth1.0方式授权登录,通过jmeter自带beanshell插件解决认证授权问题 资源附带了脚本代码和实现步骤
API说明文档:包括微博相关API,公共服务API,地理信息API。针对API您还可以在文档调用页进行评分和反馈,便于我们更好地为您提供接口支持。
Android腾讯微博开放平台入门源代码,包括: 1、basestring 2、signature 3、base64encoder 4、oauth授权 5、发布一条文字微博 6、简单的测试界面
里面的一个项目有4个微博的OAuth代码示例,用Eclipse带ADT插件打开后,必须先把SystemConfig类的相应的常量改成你申请的相应微博的appKey和appSecret才能正常运行,本人亲测其中的腾讯微博部分。
asp.net 腾讯微博SDK OAuth2.0API接口,示例源码,登陆腾讯微博授权成功后可获得昵称、图像、OpenId,最新微博及粉丝等。100%可用,示例应用于 http://goupiaotong.com/login.aspx
这个微博客户端中用到得一些知识点。...15:腾讯Oauth认证的使用(新浪的,人人的,淘宝的开放API也是基于这个的,版本不同可能) 16:ViewHolder以及LayoutInflater等的使用 17:腾讯API的调用与封装
Android登录各大网站微博OAuth认证实例,附完整实例源代码。比如新浪、腾讯、网易、搜狐等微博的OAuth认证功能,运行效果如测试界面所示。实现方面,在代码中初始化各门户网站微博的认证信息、设置当前操作的weibo,...