OAuth2.0

  OAuth2.0是OAuth协议的下一个版本,但不向后兼容OAuth1.0。OAuth2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机提供专门的认证流程。

  OAuth(开放授权)是个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。

认证和授权流程

  在认证和授权的过程中涉及的三方:

  1、服务提供方,用户使用服务提供方来存储受保护的资源,如照片、视频、联系人列表。

  2、用户,存认在服务提供方的受保护的资源的拥有者。

  3、客户端(第三方应用),要访问服务提供方资源的第三方应用,通常是网站,如提供照片打印服务的网站。在认证过程之前,客户端要向服务提供者申请客户端标识。

  使用OAuth进行认证和授权的过程如下所求:

  1、用户访问客户端的网站,想操作用户存放在服务提供方的资源。

  2、客户端向服务提供方请求一个临时令牌。

  3、服务提供方验证客户端的身份后,授予一个临时令牌。

  4、客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的架设连接发送给服务提供方。

  5、用户在服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源。

  6、授权成功后,服务提供方引导用户返回客户端的网页。

  7、客户端根据临时令牌从服务提供方那里获取访问令牌(Access Token)。

  8、服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。

  9、客户端使用获取的访问令牌(Access Token)访问存放在服务提供方上的受保护的资源。

OAuth2.0新特性:

  6种全新的流程:

  1、User-Agent Flow – 客户端运行于用户代理内(典型如web浏览器)。
  2、Web Server Flow – 客户端是web服务器程序的一部分,通过http request接入,这是OAuth 1.0提供的流程的简化版本。
  3、Device Flow – 适用于客户端在受限设备上执行操作,但是终端用户单独接入另一台电脑或者设备的浏览器
  4、Username and Password Flow – 这个流程的应用场景是,用户信任客户端处理身份凭据,但是仍然不希望客户端储存他们的用户名和密码,这个流程仅在用户高度信任客户端时才适用。
  5、Client Credentials Flow – 客户端适用它的身份凭据去获取access token,这个流程支持2-legged OAuth的场景。
  6、Assertion Flow – 客户端用assertion去换取access token,比如SAML assertion。
  可以通过使用以上的多种流程实现Native应用程序对OAuth的支持(程序运行于桌面操作系统或移动折本)

  签名简化:

  对于签名的支持,签名机制大大简化,不需要特殊的解析处理,编码和对参数进行排序。使用一个secret替代先的两个secret。

  短期token和长效的身份凭据

  原先的OAuth,会发行一个有效期非常长的token(典型的是一年有效期或者无有效期限制),在OAuth2.0中,Server将发行一个短有效期的access token和长生命期的refresh token。这将允许客户端无需用户再次操作而获取一个新的access token,并且也限制了access token的有效期。

  角色分开:

  OAuth2.0将分为两个角色:

  Authorization Server负责获取用户的授权并且发布token。

  Resourece负责处理API calls。

posted on 2014-03-01 23:19  AngelLee2009  阅读(308)  评论(0)    收藏  举报

导航