我正在寫一個玩具應用程序,用於在nodejs(expressjs)上實踐微服務和認證。微服務認證體系結構與passport.js
我有一個反應客戶端,身份驗證服務和其他服務(他們只是迴應「嗨」到目前爲止)。
- 客戶端將託管在CDN中。
- 身份驗證服務在端口5000上偵聽(例如)
- 其餘服務在端口6000-6100上偵聽。
- 我有一個redis數據庫來存儲會話信息(Twitter提供的oauth令牌)。
- 存儲應用程序信息的mongodb(與此問題無關)。
這個想法是,未經身份驗證的客戶端通過單擊Twitter按鈕(SSO)進入身份驗證服務。然後,auth服務獲取生成的twitter宣誓令牌,並在redis存儲中設置此令牌。然後,令牌可以被其他服務訪問,以便通過檢查它是否已存在於redis存儲中來了解請求是否已通過身份驗證(如果用戶刪除了其帳戶,它也將從redis存儲中刪除) 。 一旦通過身份驗證,我就會從客戶端向服務器發送Twitter令牌。
我發現這種方法非常簡單(他人用於身份驗證的nginx的代理,但我看不出有什麼理由認爲,除非這些服務在不同的域託管,但我不明白它非常好)所以我擔心我錯過了關於安全的一些事情。
問題:
- 是這種做法是否正確?
- 共享Twitter令牌是否安全?(我認爲是)?
- 是否有任何安全問題,我沒有注意到這裏?