我有多個網絡應用程序跨多個域運行。我想要實現單一登錄,以便用戶登錄一次即可訪問所有應用程序。如何使用NodeJS進行單點登錄?
我該如何實施?所有應用程序都使用NodeJS後端。
歡迎在正確的方向一般指針。
我有多個網絡應用程序跨多個域運行。我想要實現單一登錄,以便用戶登錄一次即可訪問所有應用程序。如何使用NodeJS進行單點登錄?
我該如何實施?所有應用程序都使用NodeJS後端。
歡迎在正確的方向一般指針。
由於您的應用程序在不同的域上運行,因此您無法在客戶端計算機上運行的這些APPS之間共享cookie以驗證用戶。所以不知何故信息需要在服務器端共享。這在我腦海 簡單的解決方案是 -
對所有服務器共享會話。
Hava特定身份驗證域,並在需要身份驗證時重定向用戶。在那裏驗證用戶並設置會話cookie或令牌。
只要您的任何應用程序需要身份驗證,就會將其重定向至身份驗證域。身份驗證cookie將被提供給身份驗證域以及引用者域。在看到您已經過驗證後,身份驗證服務器可以使用正確的sessionID將您重定向到原始應用程序,該會話ID將被設置爲該域的Cookie。
如果未通過身份驗證,將會要求用戶在身份驗證服務器上進行身份驗證,然後重定向會發生。
幾乎沒有變化,您可以使用令牌來實現此操作,而無需共享會話。
在實施之前正確驗證狀態。你機制中的更多國家意味着更多的錯誤和可能的攻擊機會。
考慮將您的應用移動到同一個子域。如果認證機制相同,那麼所有人都知道所有的應用程序都屬於同一家公司。人們也會更容易記住同一個域上的各個子域,而不是記住所有不同的域。
最常用的項目是http://passportjs.org/,它幾乎是我使用的唯一一個,它具有很棒的連接器,可以用於像ADFS這樣的內部解決方案以及像谷歌,臉書這樣的第三方解決方案。