OAuth及第三方登陆

        如今的生活中运用互联网的有好多地方,咱们既要申请微博,申请博客,申请邮箱等等;哪怕登陆一个小网址看点东西都要注册登陆,不过如今好多了;有了第三方登陆,不再用担忧这不够用的脑子成天记忆帐号和密码了,只要有qq,通常状况下都能解决,既方便又快捷。php

        我呢,这几天就开始接触这个东西,开始学,一边学一边记吧算是。数据库

    一.OAuth开放式受权安全

        OAuth  is  short  for Open  Authorization  网站

       这个东西是什么呢,就是让第三方网站在不知道用户qq号和密码的状况下也能登陆。下面就用一个图来讲明一下它的运行机制吧spa

   

 

         其特色就是开放  安全   简易code

  2、功能对象

OAuth1.0版本发布于2007年底:该版本有缺陷,曾经由于这个缺陷使一个公司损失巨大,如今已经不用。blog

 

OAuth2.0版本发布于2010年初:至今仍在使用。token

 

QQ用户受权第三方网站使用其QQ帐号相关的信息生命周期

 

获取受权后,在符合权限规则的状况下访问各类API;如一键分享。

 

第三方登陆并不会将用户信息拷贝一份放在本身的数据库,那样你们都会以为不安全了。只是利用了一个OAuth平台来完成这个功能

 3、三个重要步骤

       第三方页面请求QQ的OAuth页面

          用户在OAuth页面输入qq号和密码

          腾讯QQ的OAuth页面将登录结果返回给第三方网站

      (1)、请求OAuth登陆页  

                Request Token URL--未受权的令牌请求服务地址       

                第三方网站请求QQ登录页面时须使用带有特定参数的URL。

                每一个第三方网站接入QQ登录以前须要到QQ互联官网注册一下(https://connect.qq.com/),提交一份申请的材料。说明一下接入站点的描述,域名,回调地址等。经过以后会获得一组APPID                          和APPKEY.

                例如如下地址:

               https://graph.qq.com/oauth/......?......&client_id=100493579&......&redirect_uri=http:/www.weibo.com/......

 

           这里的clirnt_id对应的就是APPID。OAuth页面能够经过这个APPID来判断这个站点是否是已经注册过的平台,并非每一个站点均可以使用。

     (2)、用户使用QQ号登录并受权

                上面的redirect_uri就是回调地址,在用户登陆成功后跳转的页面。

                http://www.weibo,com/user.qqcallback?code=xxxxxxxxxxxxx.....


     (3)、返回登陆结果

                在php页面能够获取上面地址中的code大体能够肯定登陆了。可是为了更加安全,因此须要第三方网站再次请求一个URL地址(用户受权的令牌请求服务地址);用户QQ登陆受权以后须要请求           的一个带有特定参数的URL,这个URL中有参数APPID和APPKEY,又多了一个第三方站点与腾讯QQ的OAuth页面的交互,使code的传输更加安全。(code在有限时间内有效,通常时间不超过一分钟)

 4、AccessToken

          当登陆以后第三方站点拿到一个当前用户的AccessToken,有这个AccessToken就能够调用相应的API了。每次访问API都要拼接一个URL,而且都要用上AccessToken做为令牌,为了安全也通常会         用POST方式。

          

     能够将返回的数据用如下方法转换成PHP对象

             

             AccessToken--具备较长生命周期(10天或者更长)

             过时以后有两种方法从新获取:

             1.从新用qq号登陆

             2.User Authorization URL中指定参数  ....&need_refresh_token=true&......意为在返回结果中须要携带一个AccessToken。

 

         更加专业的术语我就不照搬了,我按照我理解的方式简单的说了一下这个第三方登陆的前奏,想了解更多的OAuth知识的话能够

        戳这里-->http://wiki.connect.qq.com/oauth2-0%E7%AE%80%E4%BB%8B

       关于第三方登陆我还会继续添加内容的,这只是个开始哦

相关文章
相关标签/搜索