成都網(wǎng)站制作創(chuàng)新互聯(lián)磁力搜索引擎哪個(gè)好
如何設(shè)計(jì)SSO方案?和OAuth有什么區(qū)別?
--樓蘭帶你聊最純粹的Java
? 如果面試問你,你會(huì)做一個(gè)權(quán)限系統(tǒng)嗎?那你肯定會(huì)說做過。不就是各種登錄、驗(yàn)證嗎。我做的第一個(gè)CRUD應(yīng)用就是注冊(cè)、登錄。簡單!但是,如果問你在工作中真的做過權(quán)限系統(tǒng)嗎?其實(shí)很多人都只能默默搖搖頭。因?yàn)樵诤芏嗾鎸?shí)項(xiàng)目中,權(quán)限系統(tǒng)可能不是最復(fù)雜的,但一定是牽連最廣的。因此往往大型項(xiàng)目中真正去做權(quán)限系統(tǒng)的,都只是非常核心的一小部分人。而如果你的應(yīng)用越來越復(fù)雜,作為安全門戶的權(quán)限系統(tǒng)也會(huì)隨著變得更加復(fù)雜。各種方案層出不窮。比如, 把SSO和OAuth這兩個(gè)聊的最多的名詞放到一起,你真的分清楚嗎?
一、SSO與OAuth
? 首先你要清楚, SSO和OAuth都是分布式場景下比較常見的權(quán)限認(rèn)證方案。然后,這兩個(gè)方案,在項(xiàng)目落地時(shí),很多項(xiàng)目都會(huì)用SpringSecurity這一類的權(quán)限框架實(shí)現(xiàn)。所以,這兩東西他們其實(shí)很像,但本質(zhì)上,他們完全是兩個(gè)不同的方案,解決不同的問題。
? SSO是Single Sign-On,單點(diǎn)登錄。主打的是統(tǒng)一。允許用戶通過一次登錄訪問多個(gè)相互信任的系統(tǒng),無需重復(fù)輸入憑證。比如,你登錄了淘寶后,訪問天貓,自然也是登錄的狀態(tài)。而如果在淘寶退出登錄后,訪問天貓也同時(shí)退出登錄了。
? OAuth是Open Authorization,開放授權(quán)。主打的是開放。允許用戶注冊(cè)的一個(gè)賬號(hào),可以用來登錄多個(gè)不同的平臺(tái)。他們有很多本質(zhì)的區(qū)別。比如,你可以用一個(gè)微信賬號(hào)