OAuth2

OAuth2的一個例子

OAuth(開放授權(quán))是一個關(guān)于授權(quán)的開放標準,允許用戶讓第三方應用訪問該用戶在某一網(wǎng)站上存儲的私密的資源(如照片苹威,視頻撞叨,聯(lián)系人列表)实辑,而無需將用戶名和密碼提供給第三方應用漱病。目前的版本是2.0版

假設我們要使用OAuth2.0協(xié)議搭建一個網(wǎng)站买雾,利用Github作為授權(quán)和資源服務器,實現(xiàn)第三方登錄功能杨帽。

1) 網(wǎng)站和Github之間的協(xié)商

Github會對用戶的權(quán)限做分類比如讀取倉庫信息的權(quán)限漓穿、寫入倉庫的權(quán)限、讀取用戶信息的權(quán)限注盈、修改用戶信息的權(quán)限等等晃危。如果我想獲取用戶的信息,Github會要求我老客,先在它的平臺上注冊一個應用僚饭,在申請的時候標明需要獲取用戶信息的哪些權(quán)限,并且在申請的時候填寫你的網(wǎng)站域名胧砰,Github只允許在這個域名中獲取用戶信息浪慌。

此時我的網(wǎng)站已經(jīng)和Github之間達成了共識,Github也給我發(fā)了兩張門票朴则,一張門票叫做Client Id,另一張門票叫做Client Secret。

2)用戶和Github之間的協(xié)商

用戶進入我的網(wǎng)站乌妒,點擊github登錄按鈕的時候汹想,我的網(wǎng)站會將Github給我的Client Id交給用戶,讓他進入Github授權(quán)界面撤蚊,如果此時用戶沒有登錄古掏,Github會提示登錄(當然這不是OAuth2.0客戶端部分應該關(guān)注的)。假設用戶已經(jīng)登錄Github侦啸,那么Github看到用戶手中的門票槽唾,就知道是我的網(wǎng)站讓他過來的,于是就把我的網(wǎng)站獲取的權(quán)限擺出來光涂,并詢問用戶是否允許網(wǎng)站獲取這些權(quán)限庞萍。

// 用戶登錄 github,協(xié)商
GET //github.com/login/oauth/authorize
// 協(xié)商憑證
params = {
  client_id: "xxxx",
  redirect_uri: "http://my-website.com"
}

如果用戶同意忘闻,在授權(quán)頁面點擊了確認授權(quán)后钝计,頁面會跳轉(zhuǎn)到我預先設定的 redirect_uri并附帶一個蓋了章的門票code。

// 協(xié)商成功后帶著蓋了章的 code
Location: http://my-website.com?code=xxx

這個時候齐佳,用戶和 Github 之間的協(xié)商就已經(jīng)完成私恬,Github 也會在自己的系統(tǒng)中記錄這次協(xié)商,表示該用戶已經(jīng)允許在我的網(wǎng)站訪問上直接操作和使用他的部分資源炼吴。

3)告訴Github我的網(wǎng)站要來訪問

第二步中本鸣,我們已經(jīng)拿到了蓋過章的門票code,但這個code 只能表明硅蹦,用戶允許我的網(wǎng)站從github上獲取該用戶的數(shù)據(jù)荣德,如果我直接拿這個code去github訪問數(shù)據(jù)一定會被拒絕,因為任何人都可以持有code提针,github并不知道code持有方就是我本人命爬。

還記得之前申請應用的時候github給我的兩張門票么,Client Id在上一步中已經(jīng)用過了辐脖,接下來輪到另一張門票Client Secret饲宛。

// 網(wǎng)站和 github 之間的協(xié)商
POST //github.com/login/oauth/access_token
// 協(xié)商憑證包括 github 給用戶蓋的章和 github 發(fā)給我的門票
params = {
  code: "xxx",
  client_id: "xxx",
  client_secret: "xxx",
  redirect_uri: "http://my-website.com"
}

拿著用戶蓋過章的code和能夠標識個人身份的client_id、client_secret去拜訪 github嗜价,拿到最后的綠卡access_token艇抠。

// 拿到最后的綠卡
response = {
  access_token: "e72e16c7e42f292c6912e7710c838347ae178b4a"
  scope: "user,gist"
  token_type: "bearer",
  refresh_token: "xxxx"
}

4)用戶開始使用Github賬號在我的網(wǎng)站上留言

// 訪問用戶數(shù)據(jù)
GET //api.github.com/user?access_token=e72e16c7e42f292c6912e7710c838347ae178b4a

上一步github已經(jīng)把最后的綠卡access_token給我了,通過github提供的 API 加綠卡就能夠訪問用戶的信息了久锥,能獲取用戶的哪些權(quán)限在response 中也給了明確的說明家淤,scope為user和gist,也就是只能獲取user組和gist組兩個小組的權(quán)限瑟由,user組中就包含了用戶的名字和郵箱等信息了絮重。

// 告訴我用戶的名字和郵箱
response = {
  username: "barretlee",
  email: "barret.china@gmail.com"
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子青伤,更是在濱河造成了極大的恐慌督怜,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狠角,死亡現(xiàn)場離奇詭異号杠,居然都是意外死亡,警方通過查閱死者的電腦和手機丰歌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門姨蟋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人立帖,你說我怎么就攤上這事眼溶。” “怎么了厘惦?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵偷仿,是天一觀的道長。 經(jīng)常有香客問我宵蕉,道長酝静,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任羡玛,我火速辦了婚禮别智,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稼稿。我一直安慰自己薄榛,他們只是感情好,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布让歼。 她就那樣靜靜地躺著敞恋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谋右。 梳的紋絲不亂的頭發(fā)上硬猫,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音改执,去河邊找鬼啸蜜。 笑死,一個胖子當著我的面吹牛辈挂,可吹牛的內(nèi)容都是我干的衬横。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼终蒂,長吁一口氣:“原來是場噩夢啊……” “哼蜂林!你這毒婦竟也來了遥诉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤噪叙,失蹤者是張志新(化名)和其女友劉穎突那,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體构眯,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年早龟,在試婚紗的時候發(fā)現(xiàn)自己被綠了惫霸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡葱弟,死狀恐怖壹店,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芝加,我是刑警寧澤硅卢,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站藏杖,受9級特大地震影響将塑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蝌麸,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一点寥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧来吩,春花似錦敢辩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至怠苔,卻和暖如春同廉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嘀略。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工恤溶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人帜羊。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓咒程,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讼育。 傳聞我的和親對象是個殘疾皇子帐姻,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350