基於Spring Security + OAuth2 的SSO單點登錄整合時所遇到的跨域問題分析

基礎環境

  1. 服務端(認證中心,前後端可分離,可不分離) + 客戶端
  2. 技術架構:spring-security + oauth2

博客詳見:單點登錄客戶端單點登錄服務端

問題描述

  1. 客戶端前後端分離,訪問客戶端前端將直接出現跨域請求,客戶端後端添加跨域請求頭也沒用。
  2. 客戶端前後端不分離,將能夠直接訪問到客戶端前端,但是客戶端session失效後,繼續瀏覽仍會出現跨域,自動跳轉認證中心提供的登錄頁面失敗。
原因分析:

1.前後端分離後,只要是分開部署,就會有跨域存在,一般會在後端通過cors的方式來處理,理論上應該沒有問題,但是,由於我們是SSO,因此前端第一次訪問後端時,客戶端後端檢測到未登錄,會重定向到認證中心登錄,錯誤就出在這裏,通過cors處理後的跨域請求不能夠再被重定向。因此解決方案就是:前後端部署在一起,只要客戶端前端訪問客戶端後端不跨域就沒問題。(詳情:點擊此處)
2. 關於第二點,目前仍不清楚具體原因,不過一個可行的解決方案就是,當後端檢測到未登錄或者登錄失效後,返回json讓前端去跳轉認證中心的登錄頁。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章