OAuth授权机制

OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的。
OAuth官方网站:http://oauth.net

什么是OAuth

OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAuth认证服务,任何服务提供商都可以实现自身的 OAuth认证服务,因此OAuth是开放的。
业界提供了OAuth的多种SDK开发包,如PHP、Java、C#、Ruby、Javascript等各种语言开发包,大大节约了程序员的时间,因此OAuath是简易的。
目前互联网很多服务如Open API,许多大公司如Google、Yahoo、Microsoft、Facebook、Twitter等都提供了OAuth认证服务,这些都足以说明OAuth标准逐渐成为开放资源授权的标准。

OAuth特点

  • 简单:不管是OAuth服务提供者还是应用开发者,都很容易于理解与使用;
  • 安全:没有涉及到用户密钥等信息,更安全更灵活;
  • 开放:任何服务提供商都可以实现OAuth,任何软件开发商都可以使用OAuth;

OAuth认证及授权流程图

OAuth认证及授权流程图

OAuth认证及授权流程说明

OAuth认证及授权分为三个步骤,操作过程需要获取各环节所需要的令牌,如下:

  • 获取未授权的Request Token(请求令牌);
  • 获取用户授权的Request Token(授权令牌);
  • 用授权的Request Token换取Access Token(访问令牌);

当应用拿到Access Token后,就可以有权访问用户授权的资源了。上述的三个步骤中,分别请求不同及独立的URI地址,且仅能访问一次。
具体每步执行结果如下:

  • A. 使用者(第三方站点)向OAuth服务提供商请求未授权的Request Token。向Request Token URI发起请求,请求需要带上的参数见上图;
  • B. OAuth服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者;
  • C. 使用者向OAuth服务提供商请求用户授权的Request Token,即向User Authorization URI发起请求,请求附带上一步拿到的未授权的token(令牌)与其secret(密钥);
  • D. OAuth服务提供商将引导用户进行授权认证。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用,此步可能会返回授权的Request Token也可能不返回,如Yahoo OAuth就不会返回任何信息给使用者;
  • E. Request Token 授权后,使用者将向Access Token URI发起请求,把上步授权的Request Token换成Access Token;
  • F. OAuth服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,最后返回给使用者。
  • G. 使用者以后就可以使用最后获取到的Access Token来访问用户授权的资源。

从上述的步骤中可以看出,用户始终没有将其用户名与密码等信息提供给使用者(第三方站点),从而更安全。

dianboom OAuth

dianboom OAuth是采用OAuth v1a版本的认证方法开发的,并且Access Token(访问令牌)是永久有效,除非被用户关闭授权或者应用程序由于某种原因被店谱关闭后才会导致失效的。
我们支持的操作包括:读取/更新/删除内容及图片。

OAuth资源

原文地址:https://www.cnblogs.com/mengrulsy/p/2388654.html