密鑰和訪問令牌JWT在快遞以及與Facebook的NodeJS我有兩個應用:維持在REST API
- 服務器(REST API服務器)
- 節點JS
- 快遞
- jsonwebtokens
- express-jwt
- 貓鼬
- 客戶端(便攜式前端)
- 自舉
- 角JS
- 本地存儲
- 角的Facebook
- 角JWT
Lateron,客戶端應用程序將移植到Android,iPhone和其他平臺使用phon EGAP。對於OAuth,我使用Facebook作爲提供者。現在,我剛剛意識到JSON Web Tokens是這種設置的方式。我的問題是架構問題而不是語法問題 - 如何在使用nodejs中的JWT簽署Facebook訪問令牌和用戶ID時管理密鑰?
因此,這是流在我的應用程序是如何工作的:
- 角客戶有一個登錄按鈕
- 用戶點擊按鈕> Facebook的身份驗證開始
- 客戶接收user_id說明和FB訪問令牌
- 客戶端發送[POST json主體] ser_id和訪問令牌節點+ Express服務器在'http://server.com/auth/login'
節點服務器已申請快遞,智威湯遜的所有路線,除了/認證/註冊有
VAR expressJwt = require('express-jwt');
var jwt = require('jsonwebtoken'); ({secret:''})。except({path:['/ auth/login']}));
節點服務器從req.body接收數據,使用
VAR令牌= expressjwt它提取使用JavascriptSDK來自Facebook的所有配置文件的細節,和標誌。標誌({profile},);
- 節點服務器存儲(更新,如果USER_ID存在)的新令牌中分貝並且將其作爲響應於客戶
- 客戶將其存儲爲在本地存儲 JSON數據接收的新令牌
- 客戶端使用角JWT從新令牌提取輪廓數據,並自動連接在授權報頭的新的令牌用於將其發送到服務器
現在,我的問題是:
- 我真的需要將JWT標記存儲在數據庫中嗎?我當然不會將請求標頭中的標記與數據庫進行比較
- 每次有人登錄時,是否需要爲安全生成隨機密鑰?如果是的話,那麼客戶端和服務器會如何呢?
- 何時何地需要檢查令牌過期?以及如何刷新它?
我有點迷失了設計流程和機制。
所以現在終於你怎麼做呢??你使用一些數據庫來存儲撤銷令牌或什麼?請回復一定會對我真的有幫助 – 2016-01-13 22:36:18