2017-07-27 28 views
1

SCENARIO子域的認證機制與會話修的

有3個域(其中2個是子域)


站點1

  • 獨立網站

站點2

  • 的API,完全取決於所有操作

API

  • 依靠站點1僅用於認證

ISSUE

站點1只具有一個登錄頁面

用戶登錄到站點1和h以便能夠以登錄用戶身份訪問site2其中site2使用REST API服務器執行包括身份驗證在內的所有操作(必須由site1提供)。

對此,最佳方法是什麼?


回答

1

會話令牌VS替代:

  • 會話cookie:網站1認證用戶,並創建了一個獨特的sessionId cookie來識別服務器會話。它被丟棄,因爲Cookie不能跨域輕鬆實現共享,它也意味着共享服務器會話

  • 認證令牌:站點1生成一個用戶認證成功後隨機令牌,並重定向到站點2站點2店該令牌並使用它來調用API。如果您正在爲基於表單的應用程序構建SPA(單頁應用程序)或服務器端,則會爲每個用戶使用會話,令牌可以存儲在客戶端。

關於令牌的策略,你可以使用:

  • 不透明令牌:分配給用戶,並存儲在網站1.兩個站點2和API一個隨機字符串應該查詢網站1時他們收到一個令牌,以驗證它是否是活動的,向誰對應

  • JSON網絡令牌(JWT):令牌是自包含的,包括用戶身份和一些othed CLA我們的利益如我們的到期時間或觀衆。該令牌使用站點1的密鑰進行簽名,因此可以防止更改。網站2和API可以驗證JWT沒有網上查詢到site1的,並且不需要服務器存儲它。在這種情況下,需要一個非對稱密鑰對private-public(RSA)。令牌與私鑰簽名,並與公衆

總結驗證:JWT簡化開發,減少服務器到服務器的連接,並需要更少的資源

+0

它會更好,如果智威湯遜切片從站點1 ----- ** **站點1 - 提出獨特_UserId_(與API的公共密鑰加密)中的cookie下thatsme.org ............. **站點2 ** - 可以訪問該cookie及接送到API服務器如果會話不存在........... ** ** API - 解密用自己的私鑰和與用戶ID創建存儲在站點2屆智威湯遜........... ** **站點2 - 後來使用智威湯遜的所有API調用API服務器 –

+1

此方案中,加密不會增加安全性。任何人誰偷的ID,加密或未加密,可以在任何時候都模擬用戶。你將不得不改變整個系統的鍵。 site1生成JWT很方便 – pedrofb