陳云芳,李廣志,湯 波
(南京郵電大學 計算機學院,江蘇 南京 210003)
一種基于單點登錄的開源課程群系統(tǒng)*
陳云芳,李廣志,湯 波
(南京郵電大學 計算機學院,江蘇 南京 210003)
為高效地管理和應用高校的網絡課程,滿足課程教學過程中不同類型用戶的實際需求,本文提出了一種基于單點登錄的課程群系統(tǒng),采用用戶信息統(tǒng)一管理、分布式子課程群服務的應用模式,并以單點登錄認證機制實現(xiàn)系統(tǒng)整合。系統(tǒng)以開放源代碼模塊進行構建,以耶魯大學開發(fā)的CAS結合Open LDAP實現(xiàn)統(tǒng)一認證,以Moodle教學平臺提供具體的課程服務,實踐表明它是一種可靠、高伸縮性的開放課程群系統(tǒng)。
課程群;統(tǒng)一認證;單點登錄
目前各高校都有著數量龐大的網絡課程系統(tǒng),各個課程組和院系開設各自的網絡課程,使用不同的課程服務系統(tǒng)。用戶更是可能跨院系同時在不同的網絡課程系統(tǒng)上擁有多門課程,或者在不同的部門兼有教師和學生等不同身份。這樣繁雜的網絡課程系統(tǒng)首先造成高校的網絡資源使用混亂,使用效率降低,教務、教學部門不能有效地管理相關課程,不能整體掌握學校網絡課程的開設和使用情況;其次,用戶登錄不同的課程系統(tǒng)需要使用不同的用戶名和密碼,這給管理者和使用者都帶來諸多不便;再次,傳統(tǒng)的網絡課程系統(tǒng)通常使用獨立的數據存儲模塊和認證模塊,這些模塊的定制開發(fā)造成大量的重復工作。
為了避免傳統(tǒng)獨立型網絡課程系統(tǒng)存在的弊端,目前越來越多的高校采用類似于Blackboard的課程平臺。Blackboard教學平臺是以課程為核心,并且具備很多可以獨立運行而且支持二次開發(fā)的模塊化結構,在網絡教學中比較流行的一種教學平臺。Blackboard教學管理平臺集數據存儲、認證服務和具體課程服務于一體,各種服務都由一臺集中式服務器提供,方便了高校統(tǒng)一管理,省
*本文受到南京郵電大學教改項目“云計算模式下的課程教學網站群系統(tǒng)研究”(JG00410JX10)的資助。去了用戶登錄的繁瑣過程。然而,由于Blackboard的獨立性和集成性,服務器在使用的高峰期,需承擔巨大的負荷,負載無法均衡。同時,該課程平臺把所有權限都集中于管理員,也就是由教務處統(tǒng)一管理,這并不符合課程是各個院系自己負責建設和管理的實際教學情況。
鑒于傳統(tǒng)網絡教學系統(tǒng)存在的弊病和類似于Blackboard獨立集成型課程系統(tǒng)存在的問題,本文提出一種基于單點登錄的開源課程群系統(tǒng)的新型解決方案,它繼承了傳統(tǒng)的獨立網絡教學課程系統(tǒng)的優(yōu)勢,吸收了集成型課程系統(tǒng)的優(yōu)點,既能滿足單門課程網絡教學的基本功能需求,也能滿足高校的課程建設與管理的現(xiàn)實需求。它是一種支持單點登錄、統(tǒng)一身份認證和獨立權限兼顧、課程統(tǒng)一管理和獨立建設兼顧的課程集群系統(tǒng)。
本文提出的“基于單點登錄的開源課程群系統(tǒng)”是指由后臺提供統(tǒng)一的認證模塊,子課程系統(tǒng)通過統(tǒng)一的接口進行認證,且一次登錄可以在整個課程群中漫游而不需要二次登錄的一種課程群系統(tǒng),其模型如圖1所示。

1.系統(tǒng)的結構
課程群系統(tǒng)可以分為三個層次,第一層是認證模塊,第二層是子課程群,最后一層是終端用戶。前兩層(服務模塊)都是可以支持二次開發(fā)的模塊化體系結構,并且均可以運行在不同的服務器上。雖然Blackboard等課程系統(tǒng)軟件的各個模塊也支持二次開發(fā),各個模塊卻不可以獨立運行,只能將若干個模塊揉和在一起,運行在同一臺服務器上。
基于單點登錄的開源課程群系統(tǒng)的功能實現(xiàn)主要包括:(1)提供具體課程服務的子課程群,為各個院系或者為超級大課提供具體課程服務;(2)統(tǒng)一認證單點登錄模塊,給課程群提供統(tǒng)一的認證登錄服務。
統(tǒng)一認證單點登錄模塊由高校根據學校的實際情況定制,該模塊存儲用戶信息,提供單點登錄服務。認證模塊的系統(tǒng)管理員可以對整個課程群的用戶信息進行統(tǒng)一管理。各個子課程群系統(tǒng)才是直接面向用戶提供服務的課程平臺,子課程群系統(tǒng)存儲了具體課程的相關信息,學生、老師、教學組、教務處等是該系統(tǒng)的最終用戶。每個子課程群就是一個管理域,每個域都有管理員,可以對本域中的用戶信息進行管理,可以分配不同的權限給不同的用戶。子課程群主要有兩種服務模式,一種是為院系服務的子課程群,如圖1所示的院系A和院系B組織的課程,下面再開設院系內部的課程。另外一種是為一些基礎大課服務的子課程群,如圖1所示的基礎課程A和基礎課程B組織的課程,因為這些課程面向全校數千學生用戶,往往有課程所屬的特定功能需求。
2.系統(tǒng)的優(yōu)點
本文提出的基于單點登錄的開源課程群系統(tǒng)與傳統(tǒng)網絡課程系統(tǒng)及近來流行的Blackboard等集成式課程平臺相比有以下幾個特點:
(1)身份認證、管理與權限分配分離
不管用戶登錄還是注冊到該課程系統(tǒng),都需要經過認證模塊驗證,即教務處(或學校)對用戶的身份進行認證。各個子系統(tǒng)中都有管理者,可以管理該子系統(tǒng)中的所有課程和用戶信息,以及給不同的用戶分配不同的權限。課程的擁有者被子系統(tǒng)的管理員授予了一定權限,可以全面管理自己的課程。想要開設網絡課程只需要向該域管理員提出申請,管理員審查符合要求,則添加相應的課程并授予該申請者相應權限,該申請者就擁有了自己的一門網絡課程。或者域中管理員分配給某些人相應教師角色(擁有相應權限),這些教師角色就可以自己創(chuàng)建課程,免去繁瑣的申請過程。而學生只要知道選課密鑰就可以自行加入某門課程。這樣的課程群系統(tǒng)實現(xiàn)了身份認證、管理和權限分離,符合現(xiàn)實情況,即教務處僅管理、識別教師和學生的身份,至于用戶在某個具體課程中擁有什么權限,完全由課程群子系統(tǒng)所決定。正是由于身份識別和權限分配的分離,避免了在傳統(tǒng)課程系統(tǒng)中,教師開設幾門網絡課程也就擁有幾套獨立的課程系統(tǒng),避免了一位管理者管理不同網絡課程也就管理幾個不同的系統(tǒng)的問題,避免了無法處理可能的用戶多重身份問題。
(2)使用統(tǒng)一認證單點登錄機制
該系統(tǒng)使用統(tǒng)一認證單點登錄機制,當用戶第一次登錄課程系統(tǒng)時,在客戶端輸入用戶名和密碼,通過統(tǒng)一的接口映射到中央認證模塊,實現(xiàn)統(tǒng)一認證。認證模塊首先查尋該用戶是否存在,如果該用戶不存在則返回登錄失敗;如果查詢到該用戶則向數據庫查詢比對,如果比對成功則返回一張憑證,只要瀏覽器沒有關閉,用戶攜帶此憑證就可以在課程群中所有的子課程系統(tǒng)中無限制漫游,無需重復登錄,即實現(xiàn)單點登錄功能。這符合實際需求,避免多次使用相同賬號密碼登錄系統(tǒng),減少了登錄系統(tǒng)時的安全隱患。
(3)課程具有統(tǒng)一使用模式
該課程群系統(tǒng)的所有課程都具有統(tǒng)一的使用模式,系統(tǒng)直接面向廣大師生的課程平臺是子課程群服務系統(tǒng),這也是課程群的核心服務部分,以院系課程或基礎課程為基本組織單位面向廣大師生組織網絡教學。雖然每個子課程群系統(tǒng)都是獨立開發(fā)運行的,但是因為全部使用同一課程服務軟件、具有相同的二次開發(fā)模式,從而具有相似的用戶體驗。教師在各個子課程群中擁有不同課程,學生在不同子課程群中修學不同課程,不需要重新學習系統(tǒng)的功能使用,從而最小化了系統(tǒng)使用的學習負擔。
(4)具有無限拓展性和小負荷壓力
該系統(tǒng)還有很大的靈活性,因為系統(tǒng)數據的存儲和具體課程服務都分布在不同的服務器上,由于采用集中式認證分散式服務,每一單獨的課程服務器都沒有太大的運行負擔,這有別于 Blackboard等集成式課程系統(tǒng)——集認證模塊和課程服務于同一臺服務器,當多用戶同時登錄時,該課程系統(tǒng)服務器會因為負擔太重而降低服務效率甚至無法正常運行。系統(tǒng)可以根據需要無限地拓展,這正好符合現(xiàn)實的需求——無限拓展性和小負荷壓力。
本文提出的統(tǒng)一認證的開源課程群系統(tǒng)在南京郵電大學實踐的具體方式是:耶魯大學開發(fā)的CAS(Central Authentication Service)[1]結合現(xiàn)在流行的數據庫服務LDAP(Lightweight Directory Access Protocol)[2]實現(xiàn)具有統(tǒng)一認證和單點登錄功能的認證模塊,各個子課程群的功能切實實現(xiàn)用的是一套具有諸多優(yōu)點的課程平臺服務軟件Moodle[3]來實現(xiàn)。實現(xiàn)該方案的關鍵技術包括統(tǒng)一認證和單點登錄的實現(xiàn)、合理分配各級權限、整合已經存在的用戶數據和傳統(tǒng)網絡課程數據。
1.技術背景
CAS是耶魯大學開發(fā)的單點登錄(Single Sign On)系統(tǒng),它被設計成為一個獨立的網絡應用程序,可以作為用戶身份認證模塊加入到網絡應用中。CAS的設計目標為:(1)為多個Web應用提供單點登錄服務;(2)簡化身份認證的流程;(3)將用戶身份認證集成于單一的Web應用。
LDAP是輕量級目錄訪問協(xié)議,而且是跨平臺的和標準的協(xié)議。該協(xié)議是基于X.500標準的,但是簡單了很多,可以根據需要定制,支持TCP/IP協(xié)議。LDAP對查詢進行了優(yōu)化,讀比寫的性能要優(yōu)秀很多。LDAP服務器可以用“推”或“拉”的方法備份數據。
Moodle是目前比較流行的課程管理平臺,以社會建構主義教學法為其設計基礎。Moodle的在線教學模塊采用可自由組合的動態(tài)模塊化設計,組織在線教學時就像搭積木一樣簡單。它是一個專門制作基于因特網的課程和網站的軟件包,可以在任何一臺支持PHP的計算機上運行,而且支持多種類型的數據庫。
筆者提出的課程群系統(tǒng)主要以上述三種開源代碼為基礎來實現(xiàn)。首先根據高校的實際情況定制符合客觀需求的LDAP數據存儲服務器。然后配置CAS服務器,使其與LDAP數據庫服務器連通,能夠雙向讀取和存儲數據,即CAS和LDAP二者結合構成認證模塊——實現(xiàn)統(tǒng)一認證、單點登錄機制。然后開放統(tǒng)一接口給Web應用連接,對正在使用或者新架設的Moodle的認證機制進行替換。對于新架設的Moodle更換原有的認證機制,對于正在使用的Moodle,需要將已經存在的數據導入到我們定制的LDAP中,然后重新配置它的認證方式使其對接上新開發(fā)的中央認證模塊,這樣就真正建立了符合整個高校需求的基于單點登錄的開源課程群系統(tǒng)。
2.單點登錄的實現(xiàn)
單點登錄是實現(xiàn)用戶統(tǒng)一管理的中央認證模塊。單點登錄,即一點登錄就可全網漫游。各個子課程群與認證模塊緊密相連,實現(xiàn)在一個課程中登錄成功就可以訪問其他所有的課程,無需反復登錄。功能原理如圖2所示。

用戶瀏覽器第一次訪問并登錄某課程系統(tǒng)時,系統(tǒng)檢查該用戶的Session是否存在,如果不存在則重定向到 CAS服務器端,檢查 TGT (TicketGranting Ticket),若TGT不存在或者TGT錯誤則重新定向到登錄界面,需要用戶輸入用戶名和密碼,然后通過統(tǒng)一認證的單點登錄服務器對用戶進行認證。需要注意的是CAS服務器端本身并不具有認證功能,真正的認證是在LDAP數據服務器中進行的。當LDAP認證完成后,CAS返回給用戶合法的TGT和ST(Service Ticket)給瀏覽器,并重新定向用戶的瀏覽器到原來的課程系統(tǒng)中。課程系統(tǒng)接收到返回的ST之后,再一次重定向到CAS服務器端請求認證ST的合法有效性,如果合法有效則確認該用戶已經正確登錄,課程系統(tǒng)中創(chuàng)建該用戶的Session并且提供相應的課程服務,用戶的瀏覽器重新定向到請求的地址;否則返回錯誤,要求用戶重新輸入用戶名和密碼。用戶登錄成功之后,再次訪問其他的課程系統(tǒng)時,用戶的瀏覽器到達課程系統(tǒng)時提供ST,課程系統(tǒng)把接收到的ST重定向到CAS服務器端,驗證合法性和是否過期,若ST不存在或者ST過期了,則返回校驗用戶Cookie中攜帶的TGT,如果TGT合法則CAS重新授予用戶一張ST,否則就需要用戶重新登錄,即重新定向到統(tǒng)一登錄界面,要求用戶輸入用戶名和密碼。
3.權限設計
單點登錄、統(tǒng)一認證的開源課程群系統(tǒng)存在另外一個重要的問題就是權限控制。該課程群系統(tǒng)可以使用學校的所有網絡資源,由學校統(tǒng)一規(guī)劃設計這個系統(tǒng),學校設專人對群系統(tǒng)進行維護;也可以是某個院或幾個院合作規(guī)劃運行這樣的一個課程群。這種運行方式體現(xiàn)了課程群的靈活性,同時也對課程群的設計提出了更高的要求。整個課程群中的課程可能會很多,用戶量龐大,用戶關系非常繁雜,分級分層的關系也比較復雜,這就要求系統(tǒng)架構的設計者能夠將權限問題考慮清楚。
該系統(tǒng)選用Open LDAP作為系統(tǒng)后臺數據存儲的服務器,可以充分地考慮用戶及用戶組、角色及權限分配設計問題。LDAP是以樹狀結構存儲數據的,首先要設計好以什么樣的結構來存儲,本文所提出的例子是以cn= Manager,dc=njupt,dc=com作為LDAP存儲樹的根。我們分別根據院系和課程進行樹結構的延展。樹的分支的末尾才是真正用戶,在存儲用戶實體的時候需要考慮到角色劃分的問題,例如最簡單的教師和學生的角色劃分,院系和班級的劃分等。
用戶權限的真正控制權在子課程群系統(tǒng)中,即Moodle本身對課程使用者的權限控制。Moodle安裝成功之后,默認創(chuàng)建一個系統(tǒng)管理員,我們稱之為域管理員。域管理員可以在自己的子課程群中分配權限,例如可以在自己的域中下放權限給老師,讓他們可以在該子課程群中創(chuàng)建課程,而課程創(chuàng)建者又可以為自己的課程添加新的老師,而學生可以通過選課密鑰進入到自己想要選擇的課程。從而這個子課程系統(tǒng)才能真正運行起來。雖然是集中式管理,但是權限在嚴格的控制基礎上層層下放,讓不同類型的用戶可以參與該課程群系統(tǒng)的管理。權限分配合理,整個系統(tǒng)會被非常高效地管理,而管理員不會有太多的工作負擔。
四、總結
經過數年建設,我校的課程群子系統(tǒng)取得良好的實際應用效果。目前的課程群系統(tǒng)中實際運行了4個子課程系統(tǒng),涵蓋計算機學院課程子系統(tǒng)、省級精品課程子系統(tǒng)、校級精品課程子系統(tǒng)等多種服務類型,包括基礎課、專業(yè)課、選修課等多種形態(tài),還包括高級程序設計語言、高等數學等有特殊功能需求的課程。該課程群系統(tǒng)服務用戶超過萬人,服務課程超過200門,累計點擊數接近億次。
統(tǒng)一認證單點登錄的開源課程群系統(tǒng),在設計上充分利用了高校各方面的網絡資源,具有身份認證與權限控制分離、一點登錄全網漫游、網絡課程使用統(tǒng)一化等特點。中央認證單點登錄模塊的實現(xiàn),減少了傳統(tǒng)網絡課程的獨立認證模塊的開發(fā),節(jié)約了人力和財力資源。采取統(tǒng)一認證單點登錄的CAS服務模塊,可大大減弱數據存儲的重復性和減少占用的網絡資源。采用用戶身份的統(tǒng)一管理,有助于高校對本校的網絡教學的用戶和課程進行管理。正是由于采用了本文所提出的系統(tǒng)架構,我們可以在廉價的服務器上提供伸縮能力極強的高質量分布式課程服務,初步具備了云計算的課程教學環(huán)境,這也是我們下一步研究工作的方向。
[1]CAS單點登錄[OL].http://www.jasig.org/cas.
[2]LDAP輕量級目錄訪問協(xié)議[EB/OL].http://www. openldap.org/.
[3]Moodle中 國 服 務 中 心 [EB/OL].http://www. moodlecn.com.
(編輯:金冉)
G420
A
1673-8454(2011)11-0037-04