完全跨域下單點登入的一種解決方案
阿新 • • 發佈:2018-12-31
根據oums單點登入解決方案介紹 一文我們知道單點登入有兩種模型,一種是共同父域下的單點登入(例如域名都是 xx.a.com),還有就是完全跨域下的單點登入(例如域名是xx.a.com,xx.b.com),本文我們講一下完全跨域下的單點登入該怎麼實現。
基於安全考慮,想通過cookie來實現這個功能是不太可能的了(也許有其他黑科技可以實現,這裡不做討論)。這裡介紹的方案是參考shiro框架的跨域session共享方案來實現的。我們知道瀏覽器訪問系統的時候會生成一個session,那麼每次請求如何知道是來自同一個瀏覽器呢?是因為瀏覽器為每個域儲存了一個可以稱作為session的cookie
上述方案可以實現完全跨域下的單點登入,但是存在一個很大的問題,就是安全問題!假如在第④步操作重定向回a站點時,請求連結被不法分子攔截到了,他拿著這個連結就可以直接訪問a站點了。
安全問題解決方案如下圖:
其實⑥、⑦兩步主要要解決的問題是,向b(認證伺服器)證明:“我是我,我不是不法分子”。至於SSL如何保證通訊安全性的這裡就不做描述了。