媒體BuzzFeed開源其受Google身份識別代理(Identity Aware Proxy)啟發(fā)所發(fā)展的單一登入認(rèn)證代理(Single-Sign-On Authentication Proxy,SSO),以支援員工全球化的工作模式,為旗下多應(yīng)用程式網(wǎng)站提供單一登入服務(wù)。
由於BuzzFeed的軟件生態(tài)系由數(shù)百個(gè)互相交互的微服務(wù)組成,部分這些應(yīng)用程式會在網(wǎng)絡(luò)上公開,有權(quán)限的人才可登入使用。BuzzFeed提到,由於全球員工成長,將工具曝露在網(wǎng)絡(luò)上,供內(nèi)部員工使用的需求明顯成長,因此安全方便的身分認(rèn)證需求也跟著增加。
為了建立真實(shí)單一來源的身分,BuzzFeed過去使用了Bitly的開源Oauth2_proxy服務(wù),這個(gè)反向代理使用第三方包括Google或是GitHub等OAuth2供應(yīng)商服務(wù)來認(rèn)證并授權(quán)請求,BuzzFeed以O(shè)auth2_proxy加速應(yīng)用程式的開發(fā),讓開發(fā)人員不需要每次建置服務(wù),都要重新實(shí)作身分驗(yàn)證功能。過去有一段時(shí)間BuzzFeed大量的使用Oauth2_proxy解決方案,但是隨著服務(wù)成長,發(fā)現(xiàn)可擴(kuò)展程度不如預(yù)期發(fā)展。
BuzzFeed提到,對營運(yùn)商來說,要管理爆炸成長的樣板授權(quán)代理服務(wù)非常的困難,身分驗(yàn)證功能的關(guān)鍵安全性修復(fù)程序,需要進(jìn)行超過百次的補(bǔ)丁和部署,因?yàn)槊恳粋(gè)受保護(hù)的微服務(wù)都有自己認(rèn)證代理服務(wù),使得控制這些服務(wù)存取,成為一項(xiàng)很大的挑戰(zhàn)。而可擴(kuò)展性也不是只有系統(tǒng)營運(yùn)和開發(fā)會遇到,對終端用戶也會造成困擾,這些用戶需要單獨(dú)登入每個(gè)應(yīng)用程式,讓工作流程過於繁瑣,而且也養(yǎng)成盲目點(diǎn)擊OAuth2登錄流程的壞習(xí)慣,員工容易遭受釣魚攻擊。
BuzzFeed自行開發(fā)了SSO來解決這個(gè)問題,現(xiàn)在使用者只要登錄一次,就能夠授權(quán)存取所有的應(yīng)用程式。SSO由sso-auth以及sso-proxy兩個(gè)部分組成,分別執(zhí)行巢狀授權(quán)流程以及代理請求,sso-auth是一個(gè)中央授權(quán)服務(wù),可以直接透過第三方服務(wù)完成OAuth流程。sso-proxy則能確保所有請求都經(jīng)過授權(quán),才將使用者請求導(dǎo)至上游服務(wù)。
用戶第一次登入受SSO保護(hù)的網(wǎng)站時(shí),會被轉(zhuǎn)址到sso-auth進(jìn)行認(rèn)證,當(dāng)用戶存取另一個(gè)受SSO保護(hù)的網(wǎng)站時(shí),瀏覽器會先被轉(zhuǎn)址到sso-auth,由於身分已經(jīng)過驗(yàn)證,便會進(jìn)行自動登入,接著被導(dǎo)向sso-proxy。SSO不只讓員工登入應(yīng)用程式變得更容易,而且現(xiàn)在開發(fā)人員維護(hù)身分驗(yàn)證服務(wù)的安全性也更輕松,只需要修復(fù)一個(gè)地方就可以了。