跳到主要內容區塊

計資中心電子報C&INC E-paper

專題報導

SSO 2.0單一認證與簽入整合
  • 卷期:v0026
  • 出版日期:2013-09-20

作者:許凱平 / 計算機及資訊網路中心作業管理組程式設計師


對於校園資通訊服務的使用者來說,如果能夠以一組帳號密碼(單一認證)暢行無阻,將會是一件很便利的事情。更進一步地,如果可以登入一次,就可以使用所有的系統(簽入整合),那就更棒了。基於對先進技術的追求與滿足使用者的需求,計中從2005年便著手單一認證的建置,並推廣至上百個資訊系統。為了與國際規格接軌,2012年開始進行新一代校園資通訊服務帳號(SSO 2.0)的規劃,並於今年(2013)7月推出第一波的資通訊服務帳號整合:NTU PEAP無線上網服務。讓教職員生可以用中心的資通訊服務服務帳號(計中電子郵件帳號)使用無線網路,毋需另一組專用的帳號密碼。本文從NTU SSO 1.0到NTU SSO 2.0,逐一介紹台大計中服務團隊對於本服務的開發過程與未來展望。

 

前言


多人用的資訊系統,為了進行存取控制,最直接的方式就是在系統中建立一套帳號密碼系統。隨著資訊系統數量的增長,使用者需負擔記憶多組帳號密碼,造成更新密碼上的不便與安全上的疑慮,因此就有了整合各資訊系統帳號的需求。隨著網際網路應用的興起,許多資訊系統改成以網頁的方式提供服務;加上入口網站的興起,造就了單一簽入(SSO)時代的來臨。例如登入Google Mail後,使用YouTube、Blog等服務就不用再度輸入帳號密碼就可以直接使用另一個服務。



歷史回顧


對於未採用單一認證的系統,我們只能自己做選擇帳密策略:

 

策略

帳號

密碼

易記

密碼更新

安全性

責任

A

相同

相同

麻煩

不安全

使用者

B

相同

不同

麻煩

麻煩

較安全

使用者

C

不同

相同

麻煩

麻煩

較安全

使用者

D

不同

不同

最麻煩

麻煩

最安全

使用者

 
 

在使用A策略一段時間後,如果有個資訊服務突然要你更改密碼,我想應該沒有幾個人會順便改其他的,接下來就會自然而然變成B型了。C型常見於常用的帳號名稱已經被別人搶先用掉了,只好在想另一組帳號,但是使用一樣的密碼。帳號密碼每個系統都不一樣看起來最安全,但是我想沒人可以記得住,只好寫下來,風險就轉移到小紙條上了。



正如笛卡兒所說:懷疑一切,除了我在懷疑這件事(我思故我在)。我們不能那麼相信,瀏覽器帶給我們的畫面,真的是那個我們想要連上的系統送回來的畫面,也難保這個資訊系統不會偷偷記錄下你的帳號密碼,然後用來登入用戶的其他資訊系統取得用戶的其他資料。



以台大早期校務系統的開發為例,無論是保管系統或薪資系統,都有自己的帳號系統,並且也只有相關作業人員有帳號。所以如果非業務承辦人員的同仁要查自己使用的財產狀況,就得委由保管組承辦人員進行查詢,頗為不便。如果一個資訊系統打算開放給全校使用,勢必要挑選一個較為普遍的帳號系統做為認證的來源。電子郵件系統是台大最普及的帳號系統(以下簡稱計中帳號),早期電子郵件的服務以Unix-Like的系統提供,所以其它資訊系統如果要以計中帳號為認證的來源,不外乎就是將使用者輸入的帳號密碼以FTP或TELNET 協定轉送郵件伺服器。另外,為了避免密碼外露,只限定特定主機能由特定通訊埠連接。

 

這樣的系統似乎就夠了,但是仍然有以下幾個問題:

  第一、FTP或TELNET協定並沒有針對密碼進行加密,仍有被同段網路的電腦竊聽的可能。
  第二、如果登入處理程式記錄使用者輸入的資料,從認證服務提供者(IdP: Identity Provider)的角度來看,也無從得知密碼是否也被不當記錄(如Figure 1)。

 

有沒有辦法在合作網站(SP: Service Provider)沒有經手使用者帳號密碼的狀況下,仍然能夠進行認證呢?有的,認證由台大計中負責,再發行登入憑證給使用者作為在合作網站登入之用。

 

人事室公務通訊錄算是第一個與計中帳號整合的校務系統,一般使用者可以透過網頁讓教職員輸入帳號後維護自己的通訊資料。因系所單位有維護單位內人員通訊資訊之需求,所以另外開設公務帳號,由該系統授與該帳號有編修該單位內資料的權限。



與計中帳號整合的校務系統提供了幾個便利:對使用者來說,不用記另外一組帳號與密碼、在一個地方更改密碼即可。對於系統開發者來說,省去了建立帳號系統的成本,對於承辦單位來說,除了初始作業外,也省去了因為人員異動要做的新增與停用作業(學生離校或同仁離職後計中會進行帳號停用)。

 

Art editor Img
Figure 1提供密碼認證服務給合作網站:側錄的風險
 

 

SSO 1.x回顧


台大的資訊系統中,與學生最為相關的莫過於教務處開發的選課系統。早期選課系統以學生的生日作為密碼,結果就是有些同學被人惡搞,等收到選課確認單時才發現莫名其妙被加退選一堆課程。因應這樣的事態,教務處便著手尋求解決方案,最後決定將認證委由計中郵件伺服器的帳號系統處理, 並由作業組張傑生先生與當時還在程式組的我合作開發了SSO 1.0以提供PHP與ASP應用認證服務。

 

Art editor Img
Figure 2 多次多系統帳密輸入傳遞的風險

 

 

Art editor Img
Figure 3 只在單一個系統輸入帳密

 

 

Art editor Img
Figure 4 SSO最早的登入畫面

 

 

Art editor Img
Figure 5 SSO 1.x 的登入畫面



 

後續1.1版與1.2版除了簡化API以提供更方便的使用外,更新增了對於ASP.NET的支援,最後還移轉至台大醫院的新一代的資訊系統使用。1.3版多了Java的支援,並且也寫了詳實的使用說明。同時,在myNTU專案中,又為ASP.NET的程式庫新增了權限控管與Session Proxy的功能。

 

SSO 1.3以2011的資料統計來看,合計有102個協同服務夥伴(PHP:28, JSP:2, ASP.NET:36, ASP:36, 經由Session Proxy的所有系統算一個)。回顧以往,在缺乏SSO標準的時空環境下,我們自己根據XML/SOAP/Web Service等國際標準制定了自己的SSO協定。雖然是植根於標準,且推廣成功,但隨著國際標準的塵埃落定與國際大廠的採用,我們也開始省思是否應該跟進了。

 

Art editor Img
Figure 6 SSO 示意圖

 

 

SSO 2.0


挑選SSO 1.x的後繼者也不是件容易的事情,再經過漫長評估後,我們最後放棄了OpenID與OAuth,決定採用SAML作為台大SSO的標準。在產品挑選上,由於先前為了NTU Mail 2.0的建置,已經先行準備了Active Directory(AD)的服務,所以剩下的工作就是Active Directory Federation Service (ADFS) [1]的建置與測試。另外,為了提供無線網路的便利性,我們也建置了網域原則伺服器(Network Policy Server: NPS),提供ntu_peap一次性設定的服務;相較於先前提供的以網頁登入的服務方式,使用者需一再輸入帳號密碼,新的服務方式只要在上網設備上設定好,以後需要使用無線網路便會自動連線,不用再每次輸入帳號密碼(除非更改密碼)。



由於SSO 2.0後端的帳號系統是Mail 2.0的AD,所以目前的服務範圍與SSO 1.x的Mail 1.0的帳號系統不同,並沒有包含校友帳號(啟用校友帳號的才會包含進來)與以台大附設醫院身分申請的帳號(還在討論中)。SSO 2.0的推廣上,先以新系統與尚未採用SSO 1.x 的資訊系統為主,例如網路書院與總務處網站等等。在使用上,由於SSO 2.0與 SSO 1.x的Session是獨立的,所以切換到另組網站服務時,需要再登入一次。

 


SSO 1.x 與 2.0的比較


機制上的主要差異在於,SSO 1.x在使用者完成認證之後,提供給瀏覽器轉交合作網站的只是Session Key,合作網站必須再以Session Key跟Session Server 取得使用者的資訊(Check Session Result)。相較之下,SSO 2.0在使用者完成認證之後,提供給瀏覽器的就是簽章過的使用者資訊(Secure Token),合作網站只要剖析驗證就可以了。雖然省去了伺服器對伺服器的通訊,但是相對地增加了簽章與驗章的計算量,所以在使用者的體驗上,不一定會覺得比較快。



另外SSO 1.x對於所有的合作網站一視同仁,所以每一個網站拿到的使用者資訊都是一樣的,合作網站再根據使用者屬性判斷是否給使用者存取權限。SSO 2.0可以根據不同的合作網站,給不同的使用者屬性:例如A網站只需要登入者的電子郵件資訊,SSO 2.0的伺服器就不會給姓名等資訊,可以更細緻地保護使用者資訊。另外,合作網站也可以委託SSO 2.0根據群組做基本的權限控管,不具該網站權限的使用者就可以在轉送合作網站前先行過濾。目前碰到比較大的問題是Session生命週期的問題。SSO 1.x的Session存活期為30分鐘,SSO 2.0為480分鐘,如果未來要進行整合的話,會是一項要克服的議題。

 

 

Art editor Img
Figure 7 未來展望

 


未來展望


目前已經有學務處網路書院、總務處網站加入SSO 2.0 的服務圈內,未來計中還會陸續推出Mail 2.0、VPN與NTU Space 的整合,敬請拭目以待。



參考資料


[1] "Active Directory Federation Services 概觀 - TechNet - Microsoft."
http://technet.microsoft.com/zh-tw/library/cc772593(v=ws.10).aspx
[2] "Network Policy Server - TechNet - Microsoft."
http://technet.microsoft.com/en-us/library/cc732912.aspx