NET、Java能夠?qū)崿F(xiàn)SSO單點登錄嗎?為什么?
網(wǎng)友解答: 首先可以明確的告訴你,任何一門開發(fā)語言都可以實現(xiàn)SSO單點登錄機制!什么是SSO單點登錄?SSO是英文Single Sign On的簡寫,中文翻譯就是單點登錄。單點登錄是為了
首先可以明確的告訴你,任何一門開發(fā)語言都可以實現(xiàn)SSO單點登錄機制!
什么是SSO單點登錄?SSO是英文Single Sign On的簡寫,中文翻譯就是單點登錄。單點登錄是為了解決什么問題而生的呢?在企業(yè)信息化建設(shè)過程中,業(yè)務(wù)會越來越復(fù)雜,所以系統(tǒng)會越來越多(甚至是不同語言開發(fā)的系統(tǒng)),這些系統(tǒng)間如果用戶認(rèn)證體系沒有統(tǒng)一,那我們就要記住很多密碼,另外每個系統(tǒng)都要登錄一次,相當(dāng)麻煩。也就是在這種背景下,SSO機制應(yīng)運而生。
SSO單點登錄的原理SSO會有一個獨立的中央認(rèn)證系統(tǒng)(CAS),其它系統(tǒng)沒有登錄/注冊入口,統(tǒng)一在認(rèn)證系統(tǒng)處進(jìn)行登錄認(rèn)證。當(dāng)用戶在認(rèn)證系統(tǒng)成功認(rèn)證之后,認(rèn)證系統(tǒng)會創(chuàng)建授權(quán)令牌給各個子系統(tǒng),各個子系統(tǒng)拿到令牌后進(jìn)行相關(guān)驗證后就創(chuàng)建各個系統(tǒng)的會話。
SSO最終還是基于Token+Cookie+Session等技術(shù)來實現(xiàn)的,所以說任何一款開發(fā)語言都可以實現(xiàn)SSO單點登錄。
不同場景下的SSO單點登錄實現(xiàn)方案SSO單點登錄聽上去很簡單,但在不同業(yè)務(wù)下它實現(xiàn)的成本也是不同的,比如多個B/S系統(tǒng)會存在以下場景:
1、多個系統(tǒng)部署(主)域名相同
同域名下的多個系統(tǒng)間實現(xiàn)SSO可以采用Cookie共享的方式來完成(因為不涉及跨域),當(dāng)A系統(tǒng)用戶訪問CAS認(rèn)證完成后,在跳轉(zhuǎn)回A系統(tǒng)時寫入Cookie,當(dāng)下次訪問B系統(tǒng)時就能獲取同域下的Cookie以完成會話跟蹤。
2、多個系統(tǒng)部署的域名不同
Cookie是有域限制的,非同源的Cookie互不可見。在這種情況下,A系統(tǒng)在CAS認(rèn)證完成后,可以采用消息通知的方式(如:批量請求各個子系統(tǒng)的回調(diào)URL完成Cookie寫入)去通知其它已注冊的子系統(tǒng)完成會話狀態(tài)生成。
以上就是我的觀點,對于這個問題大家是怎么看待的呢?歡迎在下方評論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗,歡迎關(guān)注我了解更多科技知識!