實(shí)現(xiàn)SSO的技術(shù)主要有:
(1)基于cookies實(shí)現(xiàn),需要注意如下幾點(diǎn):如果是基于兩個(gè)域名之間傳遞sessionid的方法可能在windows中成立,在unix&linux中可能會(huì)出現(xiàn)問(wèn)題;可以基于數(shù)據(jù)庫(kù)實(shí)現(xiàn);在安全性方面可能會(huì)作更多的考慮。另外,關(guān)于跨域問(wèn)題,雖然cookies本身不跨域,但可以利用它實(shí)現(xiàn)跨域的SSO。
(2)Broker-based(基于經(jīng)紀(jì)人),例如Kerberos等;
這種技術(shù)的特點(diǎn)就是,有一個(gè)集中的認(rèn)證和用戶帳號(hào)管理的服務(wù)器。經(jīng)紀(jì)人給被用于進(jìn)一步請(qǐng)求的電子的身份存取。中央數(shù)據(jù)庫(kù)的使用減少了管理的代價(jià),并為認(rèn)證提供一個(gè)公共和獨(dú)立的"第三方"。例如Kerberos、Sesame、IBM KryptoKnight(憑證庫(kù)思想)等。
(3)Agent-based(基于代理人)
在這種解決方案中,有一個(gè)自動(dòng)地為不同的應(yīng)用程序認(rèn)證用戶身份的代理程序。這個(gè)代理程序需要設(shè)計(jì)有不同的功能。比如, 它可以使用口令表或加密密鑰來(lái)自動(dòng)地將認(rèn)證的負(fù)擔(dān)從用戶移開(kāi)。代理人被放在服務(wù)器上面,在服務(wù)器的認(rèn)證系統(tǒng)和客戶端認(rèn)證方法之間充當(dāng)一個(gè)"翻譯"。例如SSH等。
(4)Token-based,例如SecurID、WebID、
現(xiàn)在被廣泛使用的口令認(rèn)證,比如FTP,郵件服務(wù)器的登錄認(rèn)證,這是一種簡(jiǎn)單易用的方式,實(shí)現(xiàn)一個(gè)口令在多種應(yīng)用當(dāng)中使用。
(5)基于網(wǎng)關(guān)
Agent and Broker-based,這里不作介紹。
(6)基于安全斷言標(biāo)記語(yǔ)言(SAML)實(shí)現(xiàn),SAML(Security Assertion Markup Language,安全斷言標(biāo)記語(yǔ)言)的出現(xiàn)大大簡(jiǎn)化了SSO,并被OASIS批準(zhǔn)為SSO的執(zhí)行標(biāo)準(zhǔn)。開(kāi)源組織OpenSAML 實(shí)現(xiàn)了 SAML 規(guī)范,可參考http://www.opensaml.org。