OAuth2.0学习笔记

OAuht简介

所谓OAuth(即Open Authorization,开放授权),它是一种让用户允许第三方应用在某一个网站上获取自己相关信息的协议,它能在不告诉第三方应用密码的情况下,使得第三方应用可以获得相关信息,并且对第三方应用可以使用的权限进行一定的划分控制。

名称解释

  • Resource Owner 资源所有者,即用户
  • Resource Server 资源服务器,即用户存放资源的服务器
  • Authorization Server:认证服务器,即服务提供商专门用来处理认证的服务器。可以和Resource Server在同一台服务器也可以不一致
  • clinet 第三方应用,需要获取用户在资源服务器的相关信息
  • user-Agent 一般指浏览器
  • token 认证服务器授予第三方应用的认证信息

基础流程

图一
  1. 第三方应用请求用户,希望得到授权
  2. 用户给予授权
  3. 第三方应用通过授权向认证服务器获取token
  4. 认证服务器确认第三方授权无误,授予token
  5. 第三方应用通过token访问资源服务器
  6. 资源服务器确认token无误向第三方应用开发资源

通过这样一种方式,可以在用户无须输入密码的方式下,给予第三方权限访问信息,但是每次都需要用户给予一次授权,也就是有步骤A/B两步,oauth2.0引入Refresh Token 在一次获取授权后,具备自动刷新token的功能

图二

从图中看出,请求认证服务器之后,会同时返回token和Refresh Token,在进行C/D步骤中,当token过期之后,可以滤过E/F步骤。直接进行G/H步骤,用Refresh Token获取新的token和Refresh Token,在用户无感知的情况下,进行token刷新

用户的授权模式

第三方应用必须得到用户的授权,才能获得令牌。OAuth 2.0定义了四种授权方式。

  • 授权码模式(authorization code)
  • 隐式模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials)

授权码模式

The authorization code grant type is used to obtain both access
tokens and refresh tokens and is optimized for confidential clients.

授权码模式(authorization code)可以看到是有对第三方应用做好保密的优化的,而且它是需要通过浏览器和用户进行交互,并且需要能够接收认证服务器请求。

认证方式一
  1. 用户访问第三方应用,第三方应用导向认证服务器,请求授权,请求包含它的标识符,重定向URL
  1. 认证服务器验证用户是否有权限,并且确定用户是否同意授权(基于浏览器进行的操作)
  2. 假设用户同意之后,认证服务器重定向到之前的URI,并且带有授权码
  3. 第三方应用拿着授权码和获得授权码的时候的重定向URI去认证服务器请求token
  4. 认证服务器验证授权码,确认重定向的URI与授权码一致,认证服务器返回token,和refresh token

第五步中(理解是URI与授权码需要对应,不是拿着一个授权码就可以请求到token)

隐式模式

隐式模式也被人称之为简单模式,它是不支持refresh token的,整个过程不存在和第三方应用的交互,因此refresh token是没有办法被使用的。

不像授权码认证那样分隔开了授权码和token的概念,隐式模式拿到的授权码实际就是token

认证方式二
  1. 用户访问第三方应用,第三方应用导向认证服务器,请求授权,请求包含它的标识符,重定向URL
  1. 认证服务器验证用户是否有权限,并且确定用户是否同意授权(基于浏览器进行的操作)
  2. 假设用户同意之后,认证服务器重定向到之前的URI,并且在Fragment中带有token
  3. 浏览器重定向到资源服务起,并且不包含Fragment
  4. 资源服务器返回一段脚本
  5. 浏览器执行这个脚本提取到token
  6. 返回给第三方应用token

密码模式

这种方式是将账号密码给予了第三方应用,对第三方应用的信任度比较高,比如操作系统(device operating system),高特权应用(highly privileged application)


认证方式三
  1. 用户将密码给到第三方应用
  2. 第三方应用通过密码凭证请求认证服务器
  3. 认证服务器返回token

客户端模式

第三方应用可以直接通过自己的凭证请求认证服务器

认证方式四
  1. 第三方应用通过自己的凭证,向认证服务器进行身份认证,请求token
  2. 认证服务器确认没有问题,返回一个token

参考文献

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,600评论 18 139
  • 1. 引言 周末逛简书,看了一篇写的极好的文章,点击大红心点赞,就直接给我跳转到登录界面了,原来点赞是需要登录的。...
    圣杰阅读 4,363评论 3 83
  • OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。...
    谢谢写阅读 743评论 0 1
  • 一、什么是OAuth2.0 官方网站:http://oauth.net/ http://oauth.net/2/ ...
    人类进化又没带我阅读 8,068评论 0 3
  • OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。...
    夕望有你阅读 283评论 1 2