4

我正在設計分爲微服務的大型應用程序的後端。我使用春雲其工具:尤里卡Zuul等我已經實現,它支持4種類型的OAuth2授權服務器。它工作沒有問題。春天微服務,無狀態會話,角度和靜態文件服務

然後我被要求以服務的方式HTML文件,如果沒有授權,後端必須重定向到登錄頁面,並強烈建議我不要使用會話。我認爲,如果沒有會議春天真的不知道發生了什麼,最後它必須有令牌來決定建立安全上下文

我開始研究這個問題。我發現來自Spring Security and Angular JS tutorial的示例表明,在角度內,在UI路徑內完成路由和重定向。我在github中瀏覽了幾個項目,他們也使用angular來重定向。

是否可以在完全無狀態的會話中使用後端進行重定向?(這聽起來很愚蠢,但不能用其他方式表達)我想給我的同事們提供這個答案,表明這是可能的)。如果可能的話,有沒有例子?

+0

您是否嘗試過使用基於JWT令牌身份驗證?它是完全無狀態的,我們在許多項目中使用過微服務架構。 – anataliocs

回答

0

如果您使用OAuth2進行內部安全,我建議使用oauth來訪問控制您的所有服務,將令牌的存在視爲會話。

考慮您在4個授權類型之一中生成了一些訪問令牌。您現在可以通過在Authorization: Bearer <token> HTTP標頭中傳遞該令牌或者獲取參數(如/service/endpoint?access_token=<token>)來訪問任何ResourceServerConfigurerAdapter受保護的彈簧雲資源。

如果您的令牌與用戶相關(您可以授權沒有用戶的客戶端!),您可以通過從securityContext獲取OAuth2Authentication來訪問其詳細信息。此外,如果您的訪問令牌是JWT(春季雲安全中默認支持的JWT),則您既不必在授權服務器上提供真實的令牌存儲,也不必從資源服務器請求auth服務器上的用戶端點獲取用戶信息,因爲它在JWT內部發貨。因此,有關「會話」(及其狀態)的所有內容都存儲在訪問令牌中,您可以輕鬆傳遞並在沒有複製混亂的情況下進行縮放。

我沒有事,你讓你的安全比這更無狀態;)