前後端分離基於Oauth2的SSO單點登入怎樣做?

2021-10-04 16:43:02 字數 999 閱讀 1872

單點登入顧名思義就是在多個應用系統中,只需要登入一次,就可以訪問其他相互信任的應用系統,免除多次登入的煩惱;本文主要介紹跨域間的前後端分離專案怎樣實現單點登入,並且與非前後端分離的差異在那裡?需要解決什麼問題?。

前後端分離的核心概念是後端僅返回前端所需的資料,不再渲染html頁面,前端html頁面通過ajax呼叫後端的restful api介面並使用json資料進行互動

ps:關於單點登入主流的實現思路和原理請看文章《spring security基於oauth2的sso單點登入怎樣做?乙個註解搞定》

跨域間的前後端分離專案也是基於共享統一授權服務(uaa)的cookie來實現單點登入的,但是與非前後分離不一樣的是存在以下問題需要解決

沒有過濾器/***,需要在前端判斷登入狀態

需要自己實現oauth2的授權碼模式互動邏輯

需要解決安全性問題,oauth2的clientsecret引數放在前端不安全

下面是前後端分離專案的三個角色(前端web工程、後端api工程、授權中心uaa)間進行登入/單點登入時的互動邏輯架構圖

跨域的單點登入原理在《spring security基於oauth2的sso單點登入怎樣做?乙個註解搞定》中已經介紹過了這裡就不展開說明了

前端web工程有幾個點需要注意:

紅色線條為重定向跳轉

前端工程可通過是否存在access_token判斷登入狀態

前端工程跳轉uaa之前需記錄使用者訪問的頁面位址,方便登入完成後重定向回去

ps:為什麼獲取access_token需要請求後端api工程去完成,而不是前端web工程自己直接請求uaa呢?因為安全性問題!這一步需要傳clientsecret引數,而通過後台來配置這個引數就不需要暴露給前端了。

前後端的分離

對於大部分應用,已經不需要從後端讀取html頁面或者模板,前端完全可以根據資料自行渲染頁面 模板,這樣,前後臺互動就可以簡化為資料的增刪改查。利用ajax技術,實現頁面區域性重新整理,促使了前後臺分離的可能性。那麼,如何利用前後端分離開發模式,開始乙個專案呢?1.產品文件 產品經理會先設計好整個產品...

前後端分離及使用前後端分離的原因

前後端分離指的是前端採用純html頁面,通過ajax向後台請求資料。使用前後端分離的原因,通過在後台設定引數,可以控制html在遊覽器的快取時間,遊覽器訪問頁面時不需要向後台傳送請求。減少了後台伺服器的壓力。判斷遊覽器是否取的是快取 cache control max age 3600 響應頭中有這...

前後端分離的好處

前後端的分離也實現了前後端架構的分離,帶來的好處有 整個專案的開發權重往前移,實現真正的前後端解耦,動態資源和靜態資源分離,提高了效能和擴充套件性 前端靜態化 前端有且僅有靜態內容,再明確些,只有html css js 其內容來自於完全靜態的資源而不需要任何後台技術進行動態化組裝。前端內容的執行環境...