OAuth

全稱 open authorization

相關(guān)術(shù)語

舉個(gè)例子呈宇,第三方應(yīng)用想訪問某用戶關(guān)注的公眾號。

資源所有者:用戶
資源服務(wù)器:騰訊服務(wù)器
授權(quán)服務(wù)器:騰訊認(rèn)證中心
客戶端:第三方應(yīng)用

三種認(rèn)證方式

1. Resource Owner Password Credentials Grant(資源所有者密碼憑據(jù)許可)

用戶直接微信賬號和密碼給第三方應(yīng)用即彪。

2.Implicit Grant(隱式許可)

用戶向騰訊認(rèn)證中心獲取一個(gè) token 。
用戶把這個(gè) token 傳給第三方應(yīng)用活尊,這樣第三方應(yīng)用有權(quán)訪問用戶關(guān)注的公眾號隶校。

缺點(diǎn):taken 放在 URL 的 # 后面,叫 hash fragment蛹锰,明文傳輸深胳。
優(yōu)點(diǎn):只會停留在瀏覽器端, 只有 Javascript 能訪問它宁仔,并且它不會再次通過 http request 發(fā)到別的服務(wù)器稠屠。第三方應(yīng)用的后端服務(wù)器不用參與。

3. Authorization Code Grant(授權(quán)碼許可)

用戶向騰訊認(rèn)證中心獲取一個(gè)授權(quán)碼翎苫。
用戶把這個(gè)授權(quán)碼給第三方應(yīng)用。
第三方把這個(gè)授權(quán)碼傳給騰訊認(rèn)證中心榨了,獲取 token 煎谍。
這樣第三方應(yīng)用有權(quán)訪問用戶關(guān)注的公眾號。

更強(qiáng)保障:
只有在騰訊注冊的第三方應(yīng)用發(fā)出的 token 請求龙屉, 騰訊認(rèn)證中心才認(rèn)為合法呐粘;
還可以讓授權(quán)碼有時(shí)間限制,比如5分鐘失效转捕;
還有可以讓授權(quán)碼只能換一次 token 作岖。

授權(quán)碼許可實(shí)例

我在用新浪賬號登錄知乎時(shí),客戶端是知乎五芝,授權(quán)服務(wù)器是新浪痘儡。
知乎會把我重定向到這樣的頁面:


登錄知乎

這個(gè)頁面的 URL 是:

https://api.weibo.com/oauth2/authorize?
scope=email&
state=37326432303439352d313332642d343436332d616434342d323038343833643833366234&
redirect_uri=http%3A%2F%2Fwww.zhihu.com%2Foauth%2Fcallback%2Fsina&
response_type=code&
client_id=3063806388

為了方便閱讀,我把這條 URL 進(jìn)行了多次回車枢步。
第一行:oauth2 說明使用的授權(quán)機(jī)制就是 oauth2 沉删。
第二行:scope 表示申請的權(quán)限范圍,這里是郵箱醉途》澹可選。
第三行:state 表示知乎的當(dāng)前狀態(tài)隘擎,可以指定任意值殴穴,新浪會原封不動地返回這個(gè)值。
第四行:redirect_uri 表示重定向 URI,可選項(xiàng)采幌。
第五行:response_type 固定是 code 恍涂,因?yàn)槭鞘跈?quán)碼許可,必填植榕。
第六行:client_id 這里標(biāo)識知乎再沧,必填。

當(dāng)點(diǎn)擊允許后尊残,新浪會將我導(dǎo)向到知乎事先指定的 redirect_uri炒瘸,同時(shí)附上授權(quán)碼:

https://www.zhihu.com/oauth/callback/sina?
state=37326432303439352d313332642d343436332d616434342d323038343833643833366234&
code=17ad14c9183a5d3fab259d1c96277638

這時(shí)知乎收到授權(quán)碼后,附上 redirect_uri寝衫,向認(rèn)證服務(wù)器申請令牌(token)顷扩。
這一步是在知乎后臺的服務(wù)器上完成的,對用戶不可見慰毅。

新浪核對了授權(quán)碼和重定向 URI隘截,確認(rèn)無誤后,向知乎發(fā)送訪問令牌(access token)和更新令牌(refresh token)汹胃。

授權(quán)碼有效期很短婶芭,通常設(shè)為10分鐘,只能使用一次着饥,再次會被新浪拒絕犀农。
該碼與客戶端 ID 和重定向 URI,是一一對應(yīng)關(guān)系宰掉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呵哨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子轨奄,更是在濱河造成了極大的恐慌孟害,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挪拟,死亡現(xiàn)場離奇詭異挨务,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舞丛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門耘子,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人球切,你說我怎么就攤上這事谷誓。” “怎么了吨凑?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵捍歪,是天一觀的道長户辱。 經(jīng)常有香客問我,道長糙臼,這世上最難降的妖魔是什么庐镐? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮变逃,結(jié)果婚禮上必逆,老公的妹妹穿的比我還像新娘。我一直安慰自己揽乱,他們只是感情好名眉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凰棉,像睡著了一般损拢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撒犀,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天福压,我揣著相機(jī)與錄音,去河邊找鬼或舞。 笑死荆姆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嚷那。 我是一名探鬼主播胞枕,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼魏宽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起决乎,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤队询,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后构诚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚌斩,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年范嘱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了送膳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丑蛤,死狀恐怖叠聋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情受裹,我是刑警寧澤碌补,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布虏束,位于F島的核電站,受9級特大地震影響厦章,放射性物質(zhì)發(fā)生泄漏镇匀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一袜啃、第九天 我趴在偏房一處隱蔽的房頂上張望汗侵。 院中可真熱鬧,春花似錦群发、人聲如沸晰韵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宫屠。三九已至,卻和暖如春滑蚯,著一層夾襖步出監(jiān)牢的瞬間浪蹂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工告材, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坤次,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓斥赋,卻偏偏與公主長得像缰猴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子疤剑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容

  • OAuth(開放授權(quán))是一個(gè)開放標(biāo)準(zhǔn),允許用戶提供一個(gè)令牌滑绒,而不是用戶名和密碼來訪問他們存放在特定服務(wù)提供者的數(shù)據(jù)...
    誰的青春不迷茫閱讀 899評論 0 2
  • 開放式授權(quán)OAuth 一、什么是OAuth(開放式授權(quán)) OAuth: Open Authorization OA...
    我可能是個(gè)假開發(fā)閱讀 1,208評論 0 5
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,796評論 25 707
  • 今年年初隘膘,第一份實(shí)習(xí)疑故,接觸了如何使用Facebook API, Twitter API...去獲取數(shù)據(jù),自動發(fā)個(gè)F...
    Jason_Yuan閱讀 16,086評論 3 51
  • 導(dǎo)引篇 最近工作比較忙弯菊,今天晚上終于得空纵势,總結(jié)總結(jié)UICollectionView的使用方法,以便以后的學(xué)習(xí)和使用...
    楊桃wd閱讀 1,576評論 0 1