OAuth2.0是啥

一.前言

OAuth是一种安全相关的协议,用于用户授权第三方的应用程序访问用户的web资源,并不需要透露自己的密码。2007年1.0推出后迅速成为工业标准。OAuth2.0是全新的版本,不向下兼容1.0,但保留了与之前版本OAuth相同的整体架构。2.0关注开发者的易用性,提供web应用、手机、桌面应用等其他设备提供认证流程。2012年正式发布RFC6749.

二.认证授权过程

涉及三方:

服务提供方

用户

客户端

思想是在客户端与服务提供方之间设置一个授权层。其提供令牌(token)并且有权限范围和有效期。


OAuth 2.0中,server将发行一个短有效期的access token和长生命期的refresh token。这将允许客户端无需用户再次操作而获取一个新的access token,并且也限制了access token的有效期。

同意授权是关键。

三.客户端的授权模式

OAuth2.0定义了四种授权方式:授权码、简化、密码、客户端

不管哪一种授权模式,都必须到系统备案,说明自己的身份,拿到2个身份识别码:客户端ID(client ID)和客户端秘钥(client secret)。

1.授权码模式(authorization code)是功能最常用、完整、流程最严密的模式,特点是客户端的后台服务器与服务器提供商的认证服务器进行互动。第三方应用先申请一个授权码,然后再用该码获取令牌。授权码通过前端传送,令牌则是存储在后端,所有与资源服务器的通信都在后端完成。前后端分离,避免令牌泄露。

以微信登录为例:

1)A网提供链接其中包含回调链接,接受或拒绝请求后的跳转网址,用重定向302,Location

2)跳转到微信URL,要求用户登录,询问是否同意授权给A网。同意则微信跳回到回调URL(redirect_uri参数指定),会回传一个授权码

3)A网拿到授权码后,在后端,向微信请求令牌。

https://xxx/oauth/token? client_id=CLIENT_ID& client_secret=CLIENT_SECRET& grant_type=authorization_code& code=AUTHORIZATION_CODE& redirect_uri=CALLBACK_URL

client_id参数和client_secret参数用来让 微信 确认 A 的身份(client_secret参数是保密的,因此只能在后端发请求),grant_type参数的值是AUTHORIZATION_CODE,表示采用的授权方式是授权码,code参数是上一步拿到的授权码,redirect_uri参数是令牌颁发后的回调网址。

4)微信收请求后,颁发令牌。向redirect_uri指定的网址,发送一段 JSON 数据。其中access_token字段就是令牌,refresh_token是刷新令牌。

2.隐蔽式,response_type参数为token

3.密码式,grant_type参数是授权方式,这里的password表示“密码式”

4.凭证式,grant_type参数等于client_credentials表示采用凭证式。

四. 更新令牌

令牌的有效期到了,如果让用户重新走一遍上面的流程,再申请一个新的令牌,很可能体验不好,而且也没有必要。OAuth 2.0 允许用户自动更新令牌。

这时候就用到refresh token 字段了,令牌到期前,用户使用 refresh token 发一个请求,去更新令牌。

https://xxx/oauth/token?

  grant_type=refresh_token&

  client_id=CLIENT_ID&

  client_secret=CLIENT_SECRET&

  refresh_token=REFRESH_TOKEN

grant_type参数为refresh_token表示要求更新令牌,client_id参数和client_secret参数用于确认身份,refresh_token参数就是用于更新令牌的令牌。

验证通过以后,就会颁发新的令牌。

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