簡單學習使用oAuth2方式進行三方登陸

oAuth2 登陸方式

原本公司項目是正常的用戶名、密碼登陸,可是忽然轉換成了第三方oAuth2方式登陸,由此開始學習了該種登陸形式。javascript

思路

共有5種受權模式,有受權碼模式、簡化模式、密碼模式、客戶端模式,這裏只介紹受權碼模式,這大概是功能最完整、流程最嚴密的受權模式,大概也是使用最多的受權模式。java

同普通的用戶名、密碼登陸不一樣,oAuth2登陸方式中,增長了一個受權層。用戶想要進行登陸操做時,會被跳轉到受權服務器上進行登陸,在受權服務器登陸成功時,會觸發一個回調函數從新回到當前用戶所在系統,以後執行後續操做。git

這裏使用了simple-oauth2。正常的npm install simple-oauth2便可,想了解更詳細的使用方法,點擊此傳送門即可瞭解。github

配置信息:npm

cosnt oauth2 = simpleOauth.create({
        "clientId": "<id>",
        "clientSecret": "<secret>",
        "tokenPath": "/oauth/access_token",
        "authorizePath": "/oauth/authorize"
    })

步驟:服務器

(1)用戶點擊登陸按鈕。服務器事先設定一個配置信息如上所示,後臺經過下面的這個函數會獲得一個Url,結果相似於/oauth/authorize/redirect_uri=http://localhost:3000/callback&client_id=&clientsecret=&response_type=code函數

// /auth路由處理
const authorizationUrl = oauth2.authorizationCode.authorizeURL({
    redirect_uri: 'http://localhost:3000/callback"
    // scope: '' 無關緊要參數
    // state: '' 無關緊要參數 能夠本身任意填寫
})

(2)經過該Url,能夠到達三方登陸界面,用戶在三方登錄成功時,上面的redirect_uri就會被回調,同時會附帶一個code在redirect_uri上,該code由三方登陸服務器提供,該code與客戶端Id和redirect_uri是一一對應的關係,回調的url如/callback/code=學習

// /callback路由處理
let code = req.query.code

oauth2.authorizationsCode.getToken(code, (err, result) => {
    if(err) // handle error
    const token = oauth2.accessToken.create(result) // 這裏就是獲得的access_token
})

(3)重要的token獲得以後,就預示着三方登陸已經登陸成功。接下來就是本身系統的處理了。url

至此,三方登陸已經成功登陸。code

寫的可能不盡如人意,我也是學習者,寫的目的也是爲了讓本身對oAuth2登陸加深印象,若是錯誤,歡迎指正,一塊兒進步啊。

相關文章
相關標籤/搜索