單點登錄的意思是什么?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
為企業(yè)提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、網(wǎng)站優(yōu)化、成都營銷網(wǎng)站建設(shè)、競價托管、品牌運營等營銷獲客服務(wù)。成都創(chuàng)新互聯(lián)擁有網(wǎng)絡(luò)營銷運營團隊,以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!
單點登錄SSO是指在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng),是企業(yè)業(yè)務(wù)整合的解決方案之一,其優(yōu)點:1、提高用戶的效率;2、提高開發(fā)人員的效率;3、簡化管理。
很早期的公司,一家公司可能只有一個Server,慢慢的Server開始變多了。每個Server都要進(jìn)行注冊登錄,退出的時候又要一個個退出。用戶體驗很不好!你可以想象一下,上豆瓣 要登錄豆瓣FM、豆瓣讀書、豆瓣電影、豆瓣日記......真的會讓人崩潰的。我們想要另一種登錄體驗:一家企業(yè)下的服務(wù)只要一次注冊,登錄的時候只要一次登錄,退出的時候只要一次退出。怎么做?
一次注冊。 一次注冊不難,想一下是不是只要Server之間同步用戶信息就行了?可以,但這樣描述不太完整,后續(xù)講用戶注冊的時候詳細(xì)說。實際上用戶信息的管理才是SSO真正的難點,只是作為初學(xué)者,我們的難點在于實現(xiàn)SSO的技術(shù)!我們先討論實現(xiàn)手段。
一次登錄與一次退出。 回頭看看普通商場的故事,什么東西才是保持登錄狀態(tài)關(guān)鍵的東西?記錄器(session)?那種叫做cookie的紙張?寫在紙張上的ID? 是session里面記錄的信息跟那個ID,cookie不只是記錄ID的工具而已??蛻舳顺钟蠭D,服務(wù)端持有session,兩者一起用來保持登錄狀態(tài)。客戶端需要用ID來作為憑證,而服務(wù)端需要用session來驗證ID的有效性(ID可能過期、可能根本就是偽造的找不到對應(yīng)的信息、ID下對應(yīng)的客戶端還沒有進(jìn)行登錄驗證等)。但是session這東西一開始是每個server自己獨有的,豆瓣FM有自己的session、豆瓣讀書有自己的session,而記錄ID的cookie又是不能跨域的。所以,我們要實現(xiàn)一次登錄一次退出,只需要想辦法讓各個server的共用一個session的信息,讓客戶端在各個域名下都能持有這個ID就好了。再進(jìn)一步講,只要各個server拿到同一個ID,都能有辦法檢驗出ID的有效性、并且能得到ID對應(yīng)的用戶信息就行了,也就是能檢驗ID;
單點登錄實現(xiàn)方法
server端
以server群如何生成、驗證ID的方式大致分為兩種:
“共享Cookie”這個就是上面提到的共享session的方式,我倒覺得叫“共享session”來得好一點,本質(zhì)上cookie只是存儲session-id的介質(zhì),session-id也可以放在每一次請求的url里。據(jù)說這種方式不安全,我沒去細(xì)究,哪位大神可以推薦下相關(guān)的資料,我后期補上。其實也是,畢竟session這項機制一開始就是一個server一個session的,把session拿出來讓所有server共享確實有點奇怪。
SSO-Token方式因為共享session的方式不安全,所以我們不再以session-id作為身份的標(biāo)識。我們另外生成一種標(biāo)識,把它取名SSO-Token(或Ticket),這種標(biāo)識是整個server群唯一的,并且所有server群都能驗證這個token,同時能拿到token背后代表的用戶的信息。我們要討論的也是這種方式,一會上具體流程圖。
瀏覽器端
單點登錄還有非常關(guān)鍵的一步,這一步跟server端驗證token的方式無關(guān),用最早的“共享session”的方式還是現(xiàn)在的“token”方式,身份標(biāo)識到了瀏覽器端都要面臨這樣的一個問題:用戶登錄成功拿到token(或者是session-id)后怎么讓瀏覽器存儲和分享到其它域名下?同域名很簡單,把token存在cookie里,把cookie的路徑設(shè)置成頂級域名下,這樣所有子域都能讀取cookie中的token。這就是共享cookie的方式(這才叫共享Cookie嘛,上面那個應(yīng)該叫共享session)。比如:谷歌公司,google.com是他的頂級域名,郵箱服務(wù)的mail.google.com和地圖服務(wù)的map.google.com都是它的子域。但是,跨域的時候怎么辦?谷歌公司還有一個域名,youtube.com,提供視頻服務(wù) 。
看完上述內(nèi)容,你們掌握單點登錄的意思是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!