STF之OAuth探索二

github OAuth

參考示例教程,在github申請好OAuth Apps(settings-Developer settings-OAuth Apps-new),配置好對應的認證字段,就可以完成使用了读恃。

啟動腳本修改為類似——

#!/bin/bash

# use github for demo
export STF_AUTH_OAUTH2_OAUTH_CLIENT_ID=95a2b5dd3a05a8a3efab
export STF_AUTH_OAUTH2_OAUTH_CLIENT_SECRET=45f78a43486c63a88e6d6d7467b5e0a6f37da0d3
# should use 80 port to avoid  'ECONNREFUSED 127.0.0.1:80 ' error
export STF_AUTH_OAUTH2_OAUTH_CALLBACK_URL=http://stf.demo.com/auth/oauth/callback

export STF_AUTH_OAUTH2_OAUTH_AUTHORIZATION_URL=https://github.com/login/oauth/authorize
export STF_AUTH_OAUTH2_OAUTH_TOKEN_URL=https://github.com/login/oauth/access_token
export STF_AUTH_OAUTH2_OAUTH_USERINFO_URL=https://api.github.com/user
export STF_AUTH_OAUTH2_OAUTH_SCOPE=user email

bin/stf local --public-ip stf.demo.com --poorxy-port 80 --lock-rotation --auth-type oauth2

STF的OAuth采用授權(quán)碼模式鹉胖,自動完成下列步驟——

  • A 網(wǎng)站讓用戶跳轉(zhuǎn)到 GitHub悲没。
  • GitHub 要求用戶登錄,然后詢問"A 網(wǎng)站要求獲得 xx 權(quán)限形娇,你是否同意锰霜?"
  • 用戶同意,GitHub 就會重定向回 A 網(wǎng)站桐早,同時發(fā)回一個授權(quán)碼癣缅。
  • A 網(wǎng)站使用授權(quán)碼,向 GitHub 請求令牌勘畔。
  • GitHub 返回令牌.
  • A 網(wǎng)站使用令牌所灸,向 GitHub 請求用戶數(shù)據(jù)。

probable problem

可能的坑是需要使用80端口啟動應用炫七,否則可能出現(xiàn) ECONNREFUSED 127.0.0.1:80 錯誤,暫時還沒有定位原因钾唬⊥蚰模可能的原因是

node內(nèi)部是用的node url parse 去解析 /api 參數(shù)的,然后再傳給相應的 http request所以默認就是80端口

flow

下面的流程可以用來參考分析應用的邏輯——Lerning by doing for Node:)

Navigated to http://stf.demo.com/
GET http://stf.demo.com/
[HTTP/1.1 302 Found 37ms]

GET http://stf.demo.com/auth/oauth/
[HTTP/1.1 302 Found 18ms]

Navigated to https://github.com/login/oauth/authorize?response_type=code&redirect_uri=http%3A%2F%2Fstf.demo.com%2Fauth%2Foauth%2Fcallback&scope=user&client_id=95a2b5dd3a05a8a3efab
GET https://github.com/login/oauth/authorize?response_type=code&redirect_uri=http%3A%2F%2Fstf.demo.com%2Fauth%2Foauth%2Fcallback&scope=user&client_id=95a2b5dd3a05a8a3efab
[HTTP/1.1 200 Connection established 888ms]

GET http://stf.demo.com/auth/oauth/callback?code=4f9a5580c1eb6411cf93
[HTTP/1.1 302 Found 2503ms]

GET http://stf.demo.com/?jwt=eyJhbGciOiJIUzI1NiIsImV4cCI6MTU2Mjc0OTI2MDI0M30.eyJlbWFpbCI6ImFtQGdlYml0YW5nLmNvbSIsIm5hbWUiOiJhbSJ9.8UfOXBxUiS12ZlS7NURRvwZr5RAKJ-JCBPvO7aKEpmQ
[HTTP/1.1 302 Found 50ms]

GET http://stf.demo.com/
[HTTP/1.1 200 OK 350ms]

GET http://stf.demo.com/app/api/v1/state.js
[HTTP/1.1 200 OK 17ms]

GET http://stf.demo.com/static/app/build/entry/commons.entry.js
[HTTP/1.1 304 Not Modified 23ms]

GET http://stf.demo.com/static/app/build/entry/app.entry.js
[HTTP/1.1 304 Not Modified 18ms]

GET http://stf.demo.com/static/app/build/1.099268df698652b33c03.chunk.js
[HTTP/1.1 304 Not Modified 8ms]

GET http://stf.demo.com/static/logo/exports/STF-128.png
[HTTP/1.1 200 OK 0ms]

GET http://stf.demo.com/favicon.ico
[HTTP/1.1 200 OK 0ms]

GET http://stf.demo.com:7110/socket.io/?uip=%3A%3Affff%3A127.0.0.1&EIO=3&transport=websocket
[HTTP/1.1 101 Switching Protocols 11ms]

GET http://stf.demo.com/static/app/build/96978e6fcc6395ca44894139e0baa0b2.woff
[HTTP/1.1 200 OK 0ms]

GET http://stf.demo.com/static/app/build/a8a00e89adc0ba57870098be433da27a.woff
[HTTP/1.1 200 OK 0ms]

XHR GET http://stf.demo.com/api/v1/devices
[HTTP/1.1 200 OK 52ms]

GET http://stf.demo.com/static/app/build/db812d8a70a4e88e888744c1c9a27e89.woff2
[HTTP/1.1 200 OK 0ms]

GET http://stf.demo.com/static/app/build/443a27166608ea2aef94f5cf05ff19ec.woff
[HTTP/1.1 200 OK 0ms]

GET http://stf.demo.com/static/app/build/34f4fb7db2bd6acd7b011434f72adb5c.woff
GET http://stf.demo.com/static/app/build/13313a4435455086fb63899a9f7f3966.png
[HTTP/1.1 200 OK 54ms]

GET http://stf.demo.com/static/app/devices/icon/x120/_default.jpg
[HTTP/1.1 200 OK 35ms]

一些大概的業(yè)務邏輯:

  • 完成最后一步后抡秆,會跳轉(zhuǎn)到callback的地址奕巍,由 lib/units/auth/oauth2/index.js處理,獲取到的用戶名儒士、郵箱會使用jwtutil進行encode加密后加到url地址……
  • 中間件lib/units/app/middleware/auth.js利用jwt參數(shù)獲取用戶名的止、郵箱,保存到數(shù)據(jù)庫中

后續(xù)再詳細分析……

公司內(nèi)網(wǎng)的OAuth流程暫時還沒搞定- -【update on 7-11: 直接找了接口負責人着撩,搞定:)】

下一步簡單學習一下rethinkDB的內(nèi)容:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诅福,一起剝皮案震驚了整個濱河市匾委,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌氓润,老刑警劉巖赂乐,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咖气,居然都是意外死亡挨措,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門崩溪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浅役,“玉大人,你說我怎么就攤上這事伶唯【跫龋” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵抵怎,是天一觀的道長奋救。 經(jīng)常有香客問我,道長反惕,這世上最難降的妖魔是什么尝艘? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮姿染,結(jié)果婚禮上背亥,老公的妹妹穿的比我還像新娘。我一直安慰自己悬赏,他們只是感情好狡汉,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闽颇,像睡著了一般盾戴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兵多,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天尖啡,我揣著相機與錄音,去河邊找鬼剩膘。 笑死衅斩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的怠褐。 我是一名探鬼主播畏梆,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奠涌?” 一聲冷哼從身側(cè)響起宪巨,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铣猩,沒想到半個月后揖铜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡达皿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年天吓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峦椰。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡龄寞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汤功,到底是詐尸還是另有隱情物邑,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布滔金,位于F島的核電站色解,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏餐茵。R本人自食惡果不足惜科阎,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忿族。 院中可真熱鬧锣笨,春花似錦、人聲如沸道批。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隆豹。三九已至椭岩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間璃赡,已是汗流浹背簿煌。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鉴吹,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓惩琉,卻偏偏與公主長得像豆励,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

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