OAuth 2 协议

OAuth 2 协议

@see OAuth2 and rfc6749

最近一直在做微信接口的开发工作,发现其中使用了大量的加密相关的算法和协议,所以准备单独拉出来。进行深入了解和学习一下;

一、 需求和提出

引用 rfc 里面的介绍:

  
  In the traditional client-server authentication model, the client requests 
an access-restricted resource (protected resource) on the server by 
authenticating with the server using the resource owner's credentials.  

  In order to provide third-party applications access to restricted resources, 
the resource owner shares its credentials with the third party.  
This creates several problems and limitations: 

  .   Third-party applications are required to store the resource
      owner's credentials for future use, typically a password in
      clear-text.

  .   Servers are required to support password authentication, despite
      the security weaknesses inherent in passwords.

  .   Third-party applications gain overly broad access to the resource
      owner's protected resources, leaving resource owners without any
      ability to restrict duration or access to a limited subset of
      resources.

  .   Resource owners cannot revoke access to an individual third party
      without revoking access to all third parties, and must do so by
      changing the third party's password.

  .   Compromise of any third-party application results in compromise of
      the end-user's password and all of the data protected by that
      password.


看着可能不太了解,举个简答的例子:

微信授权登陆

一般,微信授权另一个平台获取一些信息,传统的方式是,微信将账号密码告诉第三方平台,然后这个平台可以获取微信的一系列信息,然后进行处理;

但是这样做会存在几个弊端:


1. 第三方平台会保存微信的账号和密码,这样很不安全(即使是进行过加密);

2. 微信必须支持密码登录,这样做存在风险;

3. 第三方平台拥有了用户的密码,这样就可以操作微信,而且信息无法限定;

4. 用户只能通过修改密码来回收权限;但是,这样做会使第三方授权失效;

5. 只要有一个第三方被破解,就会导致用户信息泄露;

因此,需要一个更加安全的方式来处理这种问题;

二、角色

OAuth 中定义了四种角色:

  1. resource owner : user 用户 资源拥有者
  2. resource server : server 资源服务器,存放用户资源的服务器
  3. client : Third-party applications 第三方平台
  4. authorization server : 认证服务器 处理认证的服务器,返回 Access Token

关系如下:

Protocol Flow

     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+

                     Figure 1: Abstract Protocol Flow
                    

其主要流程如下:


A. 用户打开客户端后,客户端要求客户进行授权;

B. 用户同意予以客户端授权

C. 客户端使用上一步的授权,像认证服务器申请令牌

D. 认证服务器对客户端进行认证,确认无误,发放令牌(Access Token)

E. 客户端使用令牌,向资源服务器申请资源

F. 资源服务器确认令牌无误,同意向客户端,开放资源


 The preferred method for the client to obtain an authorization grant
 from the resource owner (depicted in steps (A) and (B)) is to use the
 authorization server as an intermediary, which is illustrated in
 Figure 3 in Section 4.1.

未完待续 ...

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 这篇文章介绍了Mobile BI(移动商务智能)使用过程中涉及的各种身份认证的方式,主要目的是对这些方式的原理进行...
    雨_树阅读 2,009评论 1 2
  • 以下是官网直译:https://oauth.net/ 1. 首页 OAuth是一种开放协议(注:协议是公开的,任何...
    KennethChen93阅读 11,208评论 0 20
  • OAuth2.0协议 定义 OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们...
    HoooChan阅读 5,377评论 1 3
  • 导语 旅途中最重要的是什么?也许是伙伴,也许是风景…… 我们总是在感受那些来自于外部的冲击与震撼。可是远方去的多了...
    漫游家阅读 272评论 0 0