OAuth2.0是OAuth协议的下一个版本,但不向后兼容OAuth1.0。OAuth2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机提供专门的认证流程。web
OAuth(开放受权)是个开放标准,容许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。浏览器
认证和受权流程服务器
在认证和受权的过程当中涉及的三方:网站
一、服务提供方,用户使用服务提供方来存储受保护的资源,如照片、视频、联系人列表。编码
二、用户,存认在服务提供方的受保护的资源的拥有者。操作系统
三、客户端(第三方应用),要访问服务提供方资源的第三方应用,一般是网站,如提供照片打印服务的网站。在认证过程以前,客户端要向服务提供者申请客户端标识。代理
使用OAuth进行认证和受权的过程以下所求:视频
一、用户访问客户端的网站,想操做用户存放在服务提供方的资源。blog
二、客户端向服务提供方请求一个临时令牌。排序
三、服务提供方验证客户端的身份后,授予一个临时令牌。
四、客户端得到临时令牌后,将用户引导至服务提供方的受权页面请求用户受权。在这个过程当中将临时令牌和客户端的架设链接发送给服务提供方。
五、用户在服务提供方的网页上输入用户名和密码,而后受权该客户端访问所请求的资源。
六、受权成功后,服务提供方引导用户返回客户端的网页。
七、客户端根据临时令牌从服务提供方那里获取访问令牌(Access Token)。
八、服务提供方根据临时令牌和用户的受权状况授予客户端访问令牌。
九、客户端使用获取的访问令牌(Access Token)访问存放在服务提供方上的受保护的资源。
OAuth2.0新特性:
6种全新的流程:
一、User-Agent Flow – 客户端运行于用户代理内(典型如web浏览器)。
二、Web Server Flow – 客户端是web服务器程序的一部分,经过http request接入,这是OAuth 1.0提供的流程的简化版本。
三、Device Flow – 适用于客户端在受限设备上执行操做,可是终端用户单独接入另外一台电脑或者设备的浏览器
四、Username and Password Flow – 这个流程的应用场景是,用户信任客户端处理身份凭据,可是仍然不但愿客户端储存他们的用户名和密码,这个流程仅在用户高度信任客户端时才适用。
五、Client Credentials Flow – 客户端适用它的身份凭据去获取access token,这个流程支持2-legged OAuth的场景。
六、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。