孫新江
(上海市國有資產信息中心 上海市 200003)
隨著我國數字化的進程不斷的推進,特別是城市數字化的大力發展。我國已經具備數字化轉型的條件儲備,數字化市場巨大。數字化專業人才大量激增。因為我國目前還處于數字化轉型的初期,因此數字化蓬勃發展的同時,特別是業務場景的多樣化,數字化的應用開發很難做到數字化的系統不斷的增多并且市場未有統一的標準。不同開發者和不同的系統之間的用戶認證系統之間實現的功能不盡相同。如何實現用戶的遷移,特別是系統的切換不會影響用戶的體驗,一直是困擾各個系統的一個難題。
本文結合單位多系統建設與管理的實際情況。處理不同系統對用戶的不同管理,特別是不同角色的用戶的登陸權限的管理等。采用了跨認證系統的應用設計與實現。有效的綜合利用不同統一身份認證系統的優勢。既滿足不同應用的統一身份認證的要求,又能提高了系統的高可靠性保障。同時實現了系統切換統一身份認證系統,但并不影響用戶體驗。特別是為解決不同認證系統內部賬號不唯一的問題提供了思路。本文將詳細解釋了基于oauth 接口的雙認證系統的互相印證、基于賬號標識的方式事項不同系統賬號統一管理、基于統一密碼修改的雙系統賬號權限處理方式,實現了多套認證系統的不同賬號體系的統一管理。通過規范統一網絡接口實現業務系統整合,既提升系統安全性,又簡化資源訪問操作,具有重要的理論和現實意義。特別是當前商用環境中應用系統逐漸增多后,每個系統單獨管理各自的用戶數據容易行成信息孤島,分散的用戶管理模式阻礙了商業應用向平臺化演進。當企業的互聯網業務發展到一定規模,構建統一的標準化賬戶管理體系將是必不可少的,因為它是企業互聯網云平臺的重要基礎設施,能夠為平臺帶來統一的帳號管理、身份認證、用戶授權等基礎能力,為企業帶來諸如跨系統單點登錄、第三方授權登錄等基礎能力,為構建開放平臺和業務生態提供了必要條件。用戶對于高可靠性認證的需求會隨著應用的發展,以及價值數據越來越高的而更加迫切。
OAuth 2.0 是用于授權的行業標準協議。OAuth 2.0 取代了在2006年創建的原始OAuth 協議上所做的工作。OAuth 2.0 專注于客戶端開發人員的簡單性,同時為Web 應用程序,桌面應用程序,手機和客廳設備提供特定的授權流程。本文介紹的方案的接口交互都是基于可靠的Oauth2.0 協議,因此對當前大多數實際商業環境面臨的問題都能提供參考和思路。OAuth 定義了四種角色:
(1)資源所有者,即能夠許可對受保護資源的訪問權限的實體。當資源所有者是個人時,它被稱為最終用戶。
(2)資源服務器,即托管受保護資源的服務器,能夠接收和響應使用訪問令牌對受保護資源的請求。
(3)客戶端,即使用資源所有者的授權代表資源所有者發起對受保護資源的請求的應用程序。術語“客戶端”并非特指任何特定的的實現特點(例如:應用程序是否是在服務器、臺式機或其他設備上執行)。
(4)授權服務器,即在成功驗證資源所有者且獲得授權后頒發訪問令牌給客戶端的服務器。其中授權服務器可以和資源服務器是同一臺服務器,也可以是分離的個體。一個授權服務器可以頒發被多個資源服務器接受的訪問令牌。
所謂身份認證,就是判斷一個用戶是否為合法用戶的處理過程。最常用的簡單身份認證方式是系統通過核對用戶輸入的用戶名和口令,看其是否與系統中存儲的該用戶的用戶名和口令一致,來判斷用戶身份是否正確。復雜一些的身份認證方式采用一些較復雜的加密算法與協議,需要用戶出示更多的信息(如私鑰)來證明自己的身份。身份認證一般與授權控制是相互聯系的,授權控制是指一旦用戶的身份通過認證以后,確定哪些資源該用戶可以訪問、可以進行何種方式的訪問操作等問題。在一個數字化的工作體系中,應該有一個統一的身份認證系統供各應用系統使用,但授權控制可以由各應用系統自己管理。統一身份認證系統的設計采用層次式結構,主要分為數據層、認證通道層和認證接口層,同時分為多個功能模塊,其中最主要的有身份認證模塊和權限管理模塊。其中,身份認證模塊管理用戶身份和成員站點身份。該模塊向用戶提供在線注冊功能,用戶注冊時必須提供相應信息(如用戶名、密碼),該信息即為用戶身份的憑證,擁有該信息的用戶即為統一身份認證系統的合法用戶;身份認證模塊還向成員站點提供在線注冊功能,成員站點注冊時需提供一些關于成員站點的基本信息,還包括為用戶定義的角色種類(如普通用戶、高級用戶、管理員用戶)。權限管理模塊主要有:成員站點對用戶的權限控制、用戶對成員站點的權限控制、成員站點對成員站點的權限控制。用戶向某成員站點申請分配權限時,需向該成員站點提供他的某些信息,這些信息就是用戶提供給成員站點的權限,而成員站點通過統一身份認證系統身份認證后就可以查詢用戶信息,并給該用戶分配權限,獲得權限的用戶通過統一身份認證系統身份認證后就可以以某種身份訪問該成員站點。成員站點對成員用戶信息/角色、權限信息站點的權限控制主要是成員站點控制向其它成員站點提供的調用接口。
傳統的統一身份認證中,由一個統一認證中心接管原分散再各個系統上的身份認證模塊的功能。由位于認證中心的唯一用戶信息數據庫統一對用戶身份進行認證。這種方式目前不能滿足越來越復雜的應用場景,特別是對于高可靠性要求以及應用系統的頻繁切換,認證系統的遷移等場景要求。傳統統一身份認證流程,如圖1所示具體為:

圖1
(1)用戶在統一身份認證中心進行注冊,經管理員確認后生效。
(2)用戶登陸到信任域中的任何一個應用系統。
(3)用戶在應用系統彈出的身份認證界面輸入用戶名和密碼。
(4)統一身份認證中心為該用戶創建一個票據(ticket),并將票據返回用戶,同時重定向到應用系統。
(5)用戶將票據提交給應用系統。
(6)應用系統將票據發給統一身份認證中心進行驗證。
(7)統一身份認證服務器通過查詢用戶身份信息數據庫來判斷票據的有效性,并將驗證結果及相關用戶屬性返回給應用系統。
(8)經過身份認證后,應用系統根據統一身份認證服務器的返回結果,繼續后續的流程。
對于傳統統一身份認證的可靠性和實際實踐中對于統一身份認證的高可靠性要求,筆者設計和實現了如圖2所示的基于接口傳輸認證方式的高可靠性的統一身份認證模式。該模式不僅可以實現身份認證的高可靠性,還可以實現不同認證系統的平穩遷移。為解決實際問題提供了思路和方法。具體流程如下:

圖2
(1)用戶在統一身份認證中心A 進行注冊,經管理員確認后生效。
(2)應用系統注冊到統一身份認證中心B。
(3)應用系統通過接口拉取統一身份認證中心A 的原用戶數據,并推送至統一身份認證中心B。
(4)新建用戶在統一身份認證中心B 進行注冊,經管理員確認后生效。
(5)原用戶登陸統一身份認證中心A 的信任域中的任何一個應用系統。
(6)原用戶在應用系統彈出的身份認證界面輸入用戶名和密碼。
(7)統一身份認證中心A 為該原用戶創建一個票據(ticket),并將票據返回原用戶,同時重定向到應用系統。
(8)原用戶將票據提交給應用系統。
(9)應用系統將票據發給統一身份認證中心B 進行驗證。
(10)統一身份認證中心B 將用戶數據發送給統一身份認證中心A 進行驗證。
(11)統一身份認證中心A 服務器通過查詢原用戶身份信息數據庫來判斷票據的有效性,并將驗證結果及相關原用戶屬性返回給統一身份認證中心B。
(12)統一身份認證中心B 服務器將驗證結果及相關用戶屬性返回給應用系統。
(13)經過身份認證后,應用系統根據統一身份認證中心B 服務器的返回結果,繼續后續的流程。
(14)新建用戶登陸到統一身份認證中心B 信任域中的任何一個應用系統。
(15)統一身份認證中心B 服務器通過查詢用戶身份信息數據,若不在統一身份認證中心A 的原數據當中,則新建用戶數據,并將數據推送給統一身份認證中心A 中。
(16)新建用戶經過身份認證后,應用系統根據統一身份認證中心B 服務器的返回結果,繼續后續的流程。
目前,我們對于不同認證系統的數據結構還需要人員干預,處理兩個系統的數據結構差異性、用戶唯一性標識、用戶注銷和禁用等行為。接下來需要進一步研究。
(1)不同統一身份認證中心系統的用戶信息重復的數據如何進行數據結構統一。
(2)不同統一身份認證中心系統的唯一標識的數據結構統一。
(3)不同統一身份認證中心如何自動化做到統一的用戶注銷和用戶禁用,和不同應用系統個性化的用戶管理。
構建高可靠性的統一身份認證體系,對于復雜商用環境特別是金融業業務系統大集中的場景下意義重大。本在身份認證集中化、信息化等方面作了一定的探索和研究,在實際使用也展現了良好的應用前景。高可靠性統一身份認證體系將是大勢所趨,各復雜商用場景,特別是金融機構不應只拘泥于機構內部的身份統一,在機構間建立基于安全可靠的信任關系,能夠為加強經濟信息互通互聯,促進金融發展帶來前所未有的機遇。本文介紹的基于高可靠性的統一身份認證體系,為后續的統一身份認證研究和應用提供了思路。進一步研究的問題為后續研究和設計提供了方向。通過進一步研究的問題的解決,高可靠性的統一身份認證系統會更加受到用戶的青睞。能夠消除對于重要應用平臺的開放和上云的顧慮。進一步加強對資源的利用率,有效提高數據的共享和數字化在生產生活中的應用。特別是對于數字產業化和產業數字化的背景下,行業以及復雜商用場景都亟需一套安全可靠的認證系統。高可靠性的統一身份認證體系的發展,能夠為此提供有效的解決方案。