

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