OAuth(2)的理解

1.OAuth概念?web

OAuth是Open Authorization的简写,OAuth协议为用户资源的受权提供了一个安全的、开放而又简易的标准。与以往的受权方式不一样之处是OAuth的受权不会使第三方触及到用户的账号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就能够申请得到该用户资源的受权,所以OAuth是安全的。OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即彻底废止了OAuth1.0。浏览器

官方网站的首页简介:
An open protocol to allow secure API authorization in a simple and standard method from web, mobile and desktop applications.

2.OAuth2与OAuth的不一样之处?安全

OAuth2能更好地支持不是基于浏览器的应用。对于不是基于浏览器的应用程序,这是对OAuth的主要挑战。
OAuth2.0再也不须要客户端应用程序拥有密钥。
OAuth2.0的签名流程简单得多。没有更多的特殊解析,排序,或编码。
OAuth2.0的访问令牌是“短命”的。一般状况下,OAuth1.0的访问令牌能够存储一年或一年以上。
OAuth2.0使得负责处理的OAuth请求的服务器和处理用户的受权服务器之间的角色有一个干净的分离。

3.简单理解服务器

咱们有一个资源服务器,资源服务器中有一系列的用户数据。app

如今有一个应用想要获取咱们的用户数据。

那么最简单的方法就是咱们开发一个API。
分布式

 但是某天来了个恶意应用,或者是咱们不想给它数据的应用,咱们就会形成数据的泄漏。网站


因此咱们就须要对第三方的应用进行校验,好比最原始的方法是使用IP地址,若是是不认识的IP地址就不给他资源。

但是这种方案有两个严重的缺点:编码

一、当客户应用换了IP地址以后,咱们也要同时维护更换IP地址。3d

二、当客户应用是分布式部署不少份的时候,咱们就要为同一个用户维护不少份IP地址。视频

三、ip是能够假装的。

这样无疑是繁琐麻烦、难以维护的。

因此通常业界的解决方案是给予客户应用一个“出入证”——专业称为访问令牌(Access Token)。若是来访问的客户应用带有合法的访问令牌,则能够给他数据,不然便拒绝。

那么Access Token哪里来的呢?咱们通常是由一个受权服务器颁发的。每一个容许其访问资源的客户应用都先在咱们的系统中注册一个appkey,而后每次用这个appkey向咱们的受权服务器申请Access Token。这样不论客户应用换不换ip、有多少ip,只要客户应用的appkey是惟一不变的就不用作任何修改,也不用担忧ip假装的问题。

到此为止咱们其实还面临着一个问题,那就是当咱们获取用户数据的时候,虽然咱们容许第三方的客户应用获取用户数据,用户本人却不必定容许。好比,用户在咱们系统里存储了图片、文档、视频等数据,用户只容许第三方应用获取他的文档,而不容许第三方应用获取他的图片和视频。因此在咱们颁发给客户应用相关权限的Access Token的时候,须要通过用户的赞成。
OAuth2.0本质上就是将这里的客户应用向受权服务器请求令牌与受权服务器颁发令牌的过程标准化了,根据这样一套标准与解决方案,咱们就能够安全的让第三方应用访问存储在咱们服务器上的用户数据了。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息