2014-02-23 17 views
3

我是一個有經驗的RubySinatraEvent MachineWarden等)開發,並已決定自學Node.js使用Sails.js和NodeBB的Greenfields項目 - Passport是否適合提供單點登錄?

我已經寫得夠多了Node現在感到很舒服,現在我感覺有點雄心勃勃。我想將一個簡單的Sails.js應用程序和一個與NodeBB一起構建的論壇連接在一起,以便我的用戶可以登錄到另一個,並自動登錄到另一個。

我想這些用戶有role-based authentication用於訪問Sails應用程序的不同部分,也的論壇,所以他們會需要共享一個共同的RBAC模型。

就是這個合適Passport?如果是這樣,你有任何與例子的鏈接?

回答

3

要在多個請求間持續保留會話,Passport依賴於Connect,而這又依賴於包含連接會話ID的加密cookie。要在多個應用程序中使用相同的會話,您需要同步您的Express/Connect cookie解析器,並同步或共享您的會話和用戶模型。您需要使用外部會話存儲(如Redis或Mongo),並可能將用戶數據庫與各個應用程序數據庫分開。此外,您需要將cookie解析器祕密複製並粘貼到每個應用程序中。

這不是真的是最好的辦法,但。 Passport的製造商還發布了一個open-source OAuth2 Server,您可以使用它(與Passport的OAuth 2認證支持結合使用)爲要連接在一起的所有應用程序提供認證。這是針對您的問題的更健壯和可擴展的解決方案,因爲您不必擔心同步祕密和共享數據庫。此外,它將允許您編寫任何類型的應用程序(不一定在節點中),並仍然實現共享單點登錄。

(如果仍然聽起來像更多的努力比它的價值,你總是可以只使用一個外部身份提供基於谷歌帳戶的OpenID無需設置,與Passport無縫集成,並讓谷歌做的所有工作。)

+0

謝謝,這無疑給了我一些線索繼續下去。 –

相關問題