單點登錄系統官主要的關切是什么
密碼一旦泄露,最大程度的非授權訪問將可能發生。
單點登錄的業務流程如下:
1. 用戶在登錄頁面進行登錄,如果登錄驗證不成功,返回登錄頁面重新登錄。
2. 登錄成功后,服務端通過uuid隨機生成一個名為token的字符串(相當于來的jsessionid),作為key值,并且將封裝有當前登錄用戶信息的對象轉成json字符串作為values值,以鍵值對的形式存入Redis緩存數據庫。
3. 設置key的過期時間,一般設為半個小時。
4. 將token字符串寫入Cookie中,返回給瀏覽器。在這個過程中,一般我們會同時響應一個重定向操作,讓頁面跳轉到首頁。
5. 在頁面跳轉到首頁以后,我們有一個要求:就是要在首頁上顯示出當前登錄用戶的用戶名。這個時候,我們采取的辦法是在首頁加載完畢之后,向單點登錄系統發送一個ajax請求,請求的參數就是Cookie。
6. 單點登錄系統接收到請求之后,取出Cookie里面存放的token字符串,去Redis中查找響應的用戶信息,若查不到,會重定向到登錄頁面重新登錄;若查到,會將用戶信息由json字符串轉成用戶對象,并返給瀏覽器端。同時重設key的過期時間。
7. 瀏覽器拿到返回過來的用戶對象,從中取出用戶名,嵌入到首頁的指定位置即可。注意:在這個過程中會產生一個跨域訪問的問題。
什么是跨域問題?
答:域名不同或者域名相同端口號不同均可稱為跨域。首頁位置前臺系統中,首頁通過ajax請求訪問單點登錄系統,兩個系統彼此獨立,部署在不同的Tomcat服務器上,端口號不同,是跨域請求。跨域請求能發過去,并且瀏覽器能得到服務端返回的用戶信息,但是ajax拿不到這個響應信息,瀏覽器不讓使用。
如何解決跨域訪問問題?
答:使用jsonp技術。