第三方登录的原理
四、OAUTH认证授权流程
搞清楚OAUTH的条款后,我们就可以对OAUTH认证授权的流程有一个初步的了解。其实,简单来说,OAUTH认证和授权由三个步骤组成,可以用三句话来概括:
1. 获取未经授权的请求令牌
2. 获取用户授权的Request Token
3. 将授权的请求令牌交换为访问令牌
应用程序获得Access Token后,就有权访问用户授权的资源。可以看到,这三个步骤并不是OAUTH对应的三个URL服务地址。没错,上面三个步骤中,每一步都请求一个URL并接收相关信息,并获取上一步的相关信息来请求下一个URL第三方,直到获得Access Token。具体步骤如下图所示:
每个步骤的具体执行信息如下:
A. 用户(第三方软件)向 OAUTH 服务提供商请求未经授权的请求令牌。向Request Token URL发起请求,请求需要携带的参数如上图所示。
B. OAUTH服务提供者同意用户的请求,向用户发放未经授权的oauth_token和对应的oauth_token_secret,并返回给用户。
C. 用户向OAUTH服务提供商请求用户授权的Request Token。向 User Authorization URL 发起请求,请求带上上一步获取的未授权的 token 和 key。
D. OAUTH 服务商会引导用户进行授权。该过程可能会提示用户您要将哪些受保护的资源授权给应用程序。此步骤可能会或可能不会返回授权的请求令牌。如Yahoo OAUTH 不会向用户返回任何信息。
E. Request Token授权后,用户会向Access Token URL发起请求,将上一步授权的Request Token换成Access Token。请求的参数如上图所示。这个比第一步 A 多一个参数是 Request Token。
F. OAUTH服务提供者同意用户的请求第三方登录的原理,向其颁发Access Token和对应的key,并返回给用户。
G. 用户以后可以使用上一步返回的Access Token访问用户授权的资源。
从以上步骤可以看出,用户从未向用户(第三方软件)提供过自己的用户名、密码等信息,更加安全。一个带有 OAUTH 的后台部分的典型案例:当服务 B(打印服务)想要访问用户的服务 A(图片服务)时,通过 OAUTH 机制,服务 B 向服务 A 请求未经授权的 Request Token 后,服务 A 会直接用户登录服务A的网站,询问用户是否授权服务B的图像服务。用户同意后,服务B可以访问用户在服务A上的图像服务。整个过程中服务B不接触服务A中用户的账户信息。如下图所示,图中的字母对应OAUTH过程中的字母:
五、OAUTH 服务商
OAUTH标准提出不到两年,却取得了巨大的成功。不仅提供各种语言的版本库,就连谷歌、雅虎、微软等互联网巨头都实现了OAUTH协议。由于OAUTH的客户端包比较多第三方,所以不需要我们自己写,避免重复创建轮子,直接使用即可。我使用这些库来访问 Yahoo OAUTH 服务,非常棒!这里有一些图片与大家分享!
下图是OAUTH服务商引导用户登录(如果用户一开始没有登录)
下图是提示用户授权第三方应用以及是否同意授权的页面。
下图提示用户授权成功的信息
一些服务商不仅实现了OAUTH协议上的功能第三方登录的原理,还提供了一些更友好的服务,比如管理第三方软件的授权服务。下图是雅虎管理软件授权页面,用户可以取消部分应用的授权。
评论前必须登录!
注册