2016-01-07 50 views
3

我剛剛讀了The Ins and Outs of Token-based Authentication。它聲稱可伸縮性是server based Authentication的主要問題,因爲服務器必須在本地存儲會話。它提示token based authentication爲治療。基於令牌的認證和可擴展性?幻覺?

但是真的嗎?

身份驗證只是可能導致可伸縮性問題的可能位置之一。只要服務器端存儲了任何特定於用戶的狀態信息,無論它存儲在會話範圍還是Web應用程序範圍內,這也會導致可伸縮性問題。僅僅說token based authentication可以解決可擴展性問題就過分誇大了。有太多的其他因素比較強大。 僅僅因爲基於令牌的認證是無狀態的,並不意味着整個服務器可以是無狀態的

讓我們JWT爲例,由definition of JWT

JSON網絡令牌(JWT)是一個開放標準(RFC 7519),它定義了安全傳輸信息 一個 緊湊,自成一體的方式作爲JSON對象的各方之間。這些信息可以驗證,並且可以信任,因爲它是數字簽名的。

我不認爲JWT適用於存儲狀態信息超出驗證數據。由於JWT存儲的常見合理位置都具有較小的大小限制,如HTTP標頭,Cookie。

你同意嗎?任何人都可以對此有所瞭解?

+0

您可以將會話存儲在像dynamoDB這樣的noSql數據庫中。 –

回答

2

您的應用程序是否需要其他事情的會話狀態不會影響使用JWT令牌的可伸縮性特徵。

設計一個真正的無狀態應用程序是完全可能的,在這種情況下,使用基於標記的身份驗證可以讓您保持無狀態。

您不應該使用安全令牌來存儲會話信息,因爲令牌已簽名且會話信息通常是不穩定的。每次索賠發生變化時,發行人都需要辭職。

+0

謝謝。關於無狀態應用程序,它是否僅適用於某些類型的應用程序? – smwikipedia

+0

@smwikipedia應用程序被設置爲無狀態,因此可以更輕鬆地進行擴展。今天,您會看到對有狀態(演員)服務的興趣重新增加,特別是在遊戲和物聯網領域。但是它們運行在提供可伸縮性和可靠性的平臺上(例如,請參閱Azure服務結構)。 – MvdD