2015-09-26 105 views
0

我使用Node + express來構建API。這個想法是能夠讓其他開發人員登錄並註冊他們的應用程序,以便我可以授權訪問我的API端點。獲取域名向我的API端點發出請求

exports = passport.use(new FacebookStrategy({ 

    clientID: '999999999', 
    clientSecret: '999999999', 
    callbackURL: "http://localhost:3000/auth/facebook/callback" 

},function(accessToken, refreshToken, profile, done) { 

    profile.access_token = accessToken; 

    db.mongoClient.connect(db.moments, function(err, db){ 
     var user = db.collection('user'); 

     user.find({'facebook':profile.id}).toArray(function(err, docs){ 
      console.log(docs); 
     }) 
    }) 

    done(null, profile); 

})); 

我已經使用passport facebook strategy進行了設置。這使得開發人員可以登錄到我的應用程序中的配置文件頁面,並在其中顯示我從facebook獲得的access_token。我正在使用這個access_token來允許我的應用程序和他們的應用程序之間使用bearer token strategy進行連接。

但是,我也想添加另一層安全。他們應該註冊將要對我的應用程序進行API調用的域名。這應該保護我免受開發人員將令牌傳遞給其他開發人員(我是否得到了正確的部分?)。

問題:我如何檢查他們確實是從註冊的域名發出請求?

THX,

回答

0

你的Facebook的身份驗證後,你知道的用戶,你知道他註冊的域名。然後從服務器調用某個在註冊域中定義的腳本。如果確實是來自這位用戶的電話,那麼他應該回復一些你同意他的迴應。如果響應正常,則完成身份驗證(如果我正確記得某些支付系統對在線商店進行此驗證)。

或者更復雜的東西,在Facebook認證後,發送給註冊的域名網址一些臨時令牌。然後用戶必須在下次調用此臨時令牌時發送給您,並將其換成最終令牌。

爲了安全起見,當服務器調用它們時,用戶應該有https。否則它不可靠。