張利琴 朱鵬飛 李偉 于華章
摘 要:身份認(rèn)證是網(wǎng)上銀行系統(tǒng)所有活動(dòng)的入口,不斷推陳出新的身份認(rèn)證解決方案,在集成到網(wǎng)上銀行系統(tǒng)的過(guò)程中,存在應(yīng)用接口、交互界面不統(tǒng)一等問(wèn)題,導(dǎo)致工程復(fù)雜度提高、維護(hù)難度和工作量增加。結(jié)合成熟的認(rèn)證平臺(tái),基于開(kāi)閉原則設(shè)計(jì)研發(fā)一套便于部署實(shí)施、適合迭代更新的身份認(rèn)證轉(zhuǎn)接系統(tǒng),支持當(dāng)前金融行業(yè)標(biāo)準(zhǔn)規(guī)定的多種身份認(rèn)證方案,集成基本不需要進(jìn)行改造,只對(duì)現(xiàn)有系統(tǒng)進(jìn)行擴(kuò)展,減少對(duì)現(xiàn)有系統(tǒng)運(yùn)行的影響,從而有效降低普及推廣過(guò)程中的工程量和復(fù)雜度,具有較強(qiáng)的可行性和實(shí)用性,體現(xiàn)了一定的安全性、合規(guī)性和先進(jìn)性。
關(guān)鍵詞:網(wǎng)上銀行;開(kāi)閉原則;轉(zhuǎn)接系統(tǒng)
中圖分類號(hào):TP274+.2 文獻(xiàn)標(biāo)識(shí)碼:B
Abstract: Identity authentication is the entrance of all the activities of Online Banking. New identity authentication solutions are constantly being introduced. In the process of integration into the online banking system, there are problems such as inconsistent application interfaces and interactive interfaces, which lead to the increase of engineering complexity, maintenance difficulty and workload. Combining with the mature authentication platform and based on the open-close principle, a scheme of identity authentication transfer system is designed and developed to support various authentication schemes under the current financial industry standard, which is easy to deploy and implement and suitable for iterative updating. When new forms of authentication appear, the existing system does not need to be modified, only need to be extended to decrease the impact on the operation of the existing system. Therefore, this scheme can effectively reduce the amount and complexity of the project in the popularization process, and has a strong feasibility and practicability, and also reflects certain security, the compliance and the advancement.
Key words: online banking; OCP; transfer system
1 引言
金融行業(yè)標(biāo)準(zhǔn)JR/T 0068-2012《網(wǎng)上銀行系統(tǒng)信息安全通用規(guī)范》[1]要求,網(wǎng)上銀行資金類交易、重要信息及業(yè)務(wù)變更類等高風(fēng)險(xiǎn)業(yè)務(wù)應(yīng)使用雙因素身份認(rèn)證。雙因素身份認(rèn)證由兩種身份認(rèn)證方式組成:一是客戶知曉、注冊(cè)的客戶名稱及密碼;二是客戶持有、特有并用于身份認(rèn)證的信息,包括但不限于物理介質(zhì)或電子設(shè)備等。JR/T 0068-2012還對(duì)USB Key、OTP令牌等多種常見(jiàn)的身份認(rèn)證設(shè)備提出了要求。隨著技術(shù)的發(fā)展,能夠用于雙因素身份認(rèn)證的身份認(rèn)證解決方案不斷涌現(xiàn),例如基于移動(dòng)終端的生物特征識(shí)別[2]、FIDO[3]等,在保證安全性的同時(shí)不斷改善用戶體驗(yàn),為網(wǎng)上銀行/手機(jī)銀行的推陳出新起到了推動(dòng)作用。然而,在集成到網(wǎng)上銀行/手機(jī)銀行系統(tǒng)的過(guò)程中,由于各種身份認(rèn)證解決方案的應(yīng)用接口、交互界面等不一致,導(dǎo)致工程復(fù)雜度提高,維護(hù)難度和工作量增加,極易影響到現(xiàn)有網(wǎng)上銀行系統(tǒng)的服務(wù),甚至導(dǎo)致服務(wù)中斷,這對(duì)于重視服務(wù)穩(wěn)定性和可用性的金融機(jī)構(gòu)而言,是難以接受的。因此,設(shè)計(jì)研發(fā)便于部署實(shí)施、適合迭代更新的身份認(rèn)證轉(zhuǎn)接系統(tǒng),集成基本不需要進(jìn)行改造,將對(duì)現(xiàn)有系統(tǒng)的改造變?yōu)閷?duì)現(xiàn)有系統(tǒng)的擴(kuò)展,減少對(duì)現(xiàn)有系統(tǒng)運(yùn)行的影響,從而有效降低普及推廣過(guò)程中的工程量和復(fù)雜度,具有必要性和實(shí)用性。
實(shí)踐證明,軟件產(chǎn)品在生命周期內(nèi)發(fā)生變化是不可避免的。因此,為了提高軟件產(chǎn)品的靈活性,保證軟件產(chǎn)品的穩(wěn)定性,在軟件設(shè)計(jì)開(kāi)發(fā)過(guò)程中要適應(yīng)變化。而開(kāi)閉原則(Open Closed Principe,OCP)[4]作為面向?qū)ο笤O(shè)計(jì)的核心思想之一,盡量通過(guò)擴(kuò)展軟件實(shí)體的行為來(lái)實(shí)現(xiàn)變化,而不是通過(guò)修改現(xiàn)有代碼來(lái)實(shí)現(xiàn)變化?;陂_(kāi)閉原則設(shè)計(jì)研發(fā)和部署適用于網(wǎng)上銀行、便于升級(jí)更新的身份認(rèn)證系統(tǒng),將對(duì)現(xiàn)有系統(tǒng)的改造變?yōu)閷?duì)現(xiàn)有系統(tǒng)的擴(kuò)展,有助于減少工程的復(fù)雜度,避免影響現(xiàn)有系統(tǒng)的服務(wù)穩(wěn)定性。
2 設(shè)計(jì)思路
2.1 設(shè)計(jì)目標(biāo)
在網(wǎng)上銀行部署實(shí)施雙因素身份認(rèn)證機(jī)制,往往面臨幾個(gè)問(wèn)題。
第一,不同的身份認(rèn)證方式,對(duì)人機(jī)交互界面的需求不同。例如,如果使用數(shù)字證書(基于USB Key),需要在網(wǎng)上銀行的用戶登錄頁(yè)面以及各項(xiàng)業(yè)務(wù)的用戶身份認(rèn)證頁(yè)面加載用于檢查USB Key是否連接到電腦并與其進(jìn)行數(shù)據(jù)交換的COM控件;如果使用動(dòng)態(tài)口令(動(dòng)態(tài)令牌),則需要在網(wǎng)上銀行的上述頁(yè)面增加動(dòng)態(tài)口令的輸入窗口。這意味著如果調(diào)整雙因素身份認(rèn)證機(jī)制的組成部分,需要對(duì)網(wǎng)上銀行的多個(gè)頁(yè)面進(jìn)行相應(yīng)的調(diào)整。這使得網(wǎng)上銀行系統(tǒng)的開(kāi)發(fā)和更新難以遵循開(kāi)閉原則,不僅增加了工作量和復(fù)雜度,還容易出現(xiàn)疏漏。這對(duì)于在網(wǎng)上銀行系統(tǒng)部署實(shí)施新的身份認(rèn)證技術(shù)是不利的。
第二,不同的身份認(rèn)證方式涉及的身份認(rèn)證憑據(jù)不同,所需的后續(xù)處理方式也不同。例如,如果使用數(shù)字證書(基于USB Key),涉及的身份認(rèn)證憑據(jù)是USB Key生成的數(shù)字簽名(通常為長(zhǎng)度超過(guò)128字節(jié)的比特串),需要使用數(shù)字證書中的公鑰驗(yàn)證其有效性,并通過(guò)電子認(rèn)證服務(wù)驗(yàn)證數(shù)字證書的有效性,最終確定用戶身份的有效性;如果使用動(dòng)態(tài)口令(動(dòng)態(tài)令牌),則涉及的身份認(rèn)證憑據(jù)是動(dòng)態(tài)令牌生成的動(dòng)態(tài)口令(通常為6位十進(jìn)制數(shù)),需要與動(dòng)態(tài)口令認(rèn)證系統(tǒng)生成的一系列動(dòng)態(tài)口令進(jìn)行比對(duì),從而確定用戶身份的有效性。這意味著如果調(diào)整雙因素身份認(rèn)證機(jī)制的組成部分,需要對(duì)網(wǎng)上銀行系統(tǒng)的多個(gè)組成部分進(jìn)行相應(yīng)的調(diào)整,進(jìn)一步提高了網(wǎng)上銀行系統(tǒng)遵循開(kāi)閉原則的難度。
本系統(tǒng)的設(shè)計(jì)目標(biāo)是為網(wǎng)上銀行系統(tǒng)提供便于集成、維護(hù)以及升級(jí)換代的第二因子身份認(rèn)證服務(wù),具體包括四項(xiàng)內(nèi)容。
(1)構(gòu)建雙因素身份認(rèn)證機(jī)制:支持可用于網(wǎng)上銀行雙因素身份認(rèn)證的常用身份認(rèn)證機(jī)制,與網(wǎng)上銀行系統(tǒng)的用戶名/口令機(jī)制相疊加,從而形成網(wǎng)上銀行所需的雙因素身份認(rèn)證機(jī)制。
(2)便于集成:向網(wǎng)上銀行系統(tǒng)提供統(tǒng)一的身份認(rèn)證服務(wù)接口,使系統(tǒng)成為與網(wǎng)上銀行業(yè)務(wù)系統(tǒng)相對(duì)獨(dú)立的身份認(rèn)證服務(wù),改善身份認(rèn)證服務(wù)與網(wǎng)上銀行業(yè)務(wù)系統(tǒng)之間的緊耦合關(guān)系。
(3)便于集成和切換:支持多種第二因子身份認(rèn)證技術(shù)(包括基于數(shù)字證書的身份認(rèn)證和基于動(dòng)態(tài)口令的身份認(rèn)證)的同時(shí),身份認(rèn)證服務(wù)接口與具體的身份認(rèn)證技術(shù)方案相對(duì)獨(dú)立,無(wú)論使用何種身份認(rèn)證技術(shù),與網(wǎng)上銀行系統(tǒng)的集成接口保持不變。支持相對(duì)獨(dú)立的身份認(rèn)證交互界面,各身份認(rèn)證技術(shù)所需的交互頁(yè)面與網(wǎng)上銀行系統(tǒng)的用戶名/口令身份認(rèn)證頁(yè)面相互獨(dú)立,進(jìn)一步改善身份認(rèn)證服務(wù)與網(wǎng)上銀行業(yè)務(wù)系統(tǒng)之間的緊耦合關(guān)系。
(4)擴(kuò)展性強(qiáng):部署實(shí)施新的身份認(rèn)證技術(shù)時(shí),相關(guān)工作控制在身份認(rèn)證服務(wù)范圍內(nèi),力爭(zhēng)不影響現(xiàn)有的網(wǎng)上銀行系統(tǒng),基本不需要進(jìn)行聯(lián)調(diào)。
作為網(wǎng)上銀行系統(tǒng)的重要組成部分,應(yīng)當(dāng)遵循網(wǎng)上銀行相關(guān)監(jiān)管的要求。為此,系統(tǒng)及其提供的身份認(rèn)證服務(wù)應(yīng)當(dāng)符合金融行業(yè)標(biāo)準(zhǔn)的相關(guān)要求,如JR/T 0068、JR/T 0149[5]等。為了確保安全合規(guī),基于數(shù)字證書的身份認(rèn)證系統(tǒng)和基于動(dòng)態(tài)口令的身份認(rèn)證系統(tǒng)分別使用符合金融行業(yè)標(biāo)準(zhǔn)要求的成熟系統(tǒng),主要的設(shè)計(jì)研發(fā)工作集中在面向網(wǎng)上銀行系統(tǒng)提供統(tǒng)一的身份認(rèn)證服務(wù)接口方面。相應(yīng)地,系統(tǒng)被實(shí)現(xiàn)為身份認(rèn)證轉(zhuǎn)接系統(tǒng)。
2.2 技術(shù)路線
根據(jù)設(shè)計(jì)目標(biāo),確定技術(shù)路線。
以O(shè)Auth[6]的思路為基礎(chǔ),使用訪問(wèn)令牌作為系統(tǒng)向網(wǎng)上銀行系統(tǒng)提供的身份認(rèn)證憑據(jù)。當(dāng)用戶通過(guò)身份認(rèn)證時(shí),為用戶發(fā)布令牌;當(dāng)用戶請(qǐng)求訪問(wèn)網(wǎng)上銀行業(yè)務(wù)系統(tǒng)資源時(shí),通過(guò)驗(yàn)證訪問(wèn)令牌的有效性確定是否允許訪問(wèn)。訪問(wèn)令牌除了發(fā)給用戶之外,還在系統(tǒng)內(nèi)部保存令牌及其發(fā)布狀態(tài)。用戶使用訪問(wèn)令牌請(qǐng)求訪問(wèn)網(wǎng)上銀行業(yè)務(wù)系統(tǒng)資源、網(wǎng)上銀行業(yè)務(wù)系統(tǒng)查詢用戶的身份認(rèn)證狀態(tài)時(shí),系統(tǒng)查詢用戶對(duì)應(yīng)的令牌發(fā)布。如果令牌已發(fā)布,則根據(jù)系統(tǒng)保存的令牌驗(yàn)證其有效性。如果有效,系統(tǒng)應(yīng)答網(wǎng)上銀行業(yè)務(wù)系統(tǒng)用戶身份認(rèn)證狀態(tài)為“通過(guò)認(rèn)證”,網(wǎng)上銀行業(yè)務(wù)系統(tǒng)可給予用戶訪問(wèn)相應(yīng)資源的權(quán)限。否則,系統(tǒng)將用戶訪問(wèn)請(qǐng)求轉(zhuǎn)接到網(wǎng)上銀行業(yè)務(wù)系統(tǒng)配置的身份認(rèn)證系統(tǒng)頁(yè)面,引導(dǎo)用戶重新進(jìn)行身份認(rèn)證。
系統(tǒng)采用分布式架構(gòu)設(shè)計(jì),將各個(gè)功能實(shí)現(xiàn)為分布式的服務(wù),盡量降低服務(wù)之間的耦合程度。各服務(wù)設(shè)計(jì)為REST風(fēng)格的Web Service。REST是目前主流的Web Service軟件架構(gòu)風(fēng)格[7],有助于降低開(kāi)發(fā)的復(fù)雜性,同時(shí),還能夠提高系統(tǒng)的可伸縮性。
身份認(rèn)證轉(zhuǎn)接相關(guān)功能具體包括五項(xiàng)內(nèi)容。
(1)網(wǎng)上銀行業(yè)務(wù)系統(tǒng)對(duì)接:向網(wǎng)上銀行業(yè)務(wù)系統(tǒng)提供查詢用戶身份認(rèn)證狀態(tài)的接口。在接口被調(diào)用時(shí),根據(jù)用戶對(duì)應(yīng)的訪問(wèn)令牌的當(dāng)前狀態(tài)向網(wǎng)上銀行業(yè)務(wù)系統(tǒng)返回“身份認(rèn)證通過(guò)”的消息,或者“需要重定向到身份認(rèn)證頁(yè)面”的消息。
(2)數(shù)字證書身份認(rèn)證系統(tǒng)對(duì)接:將用戶通過(guò)網(wǎng)上銀行業(yè)務(wù)系統(tǒng)發(fā)來(lái)的重定向后的訪問(wèn)請(qǐng)求轉(zhuǎn)到數(shù)字證書身份認(rèn)證系統(tǒng)的相應(yīng)頁(yè)面,身份認(rèn)證結(jié)束后將用戶訪問(wèn)請(qǐng)求重定向到用戶請(qǐng)求訪問(wèn)的網(wǎng)上銀行業(yè)務(wù)系統(tǒng)資源。
(3)動(dòng)態(tài)口令身份認(rèn)證系統(tǒng)對(duì)接:將用戶通過(guò)網(wǎng)上銀行業(yè)務(wù)系統(tǒng)發(fā)來(lái)的重定向后的訪問(wèn)請(qǐng)求轉(zhuǎn)到動(dòng)態(tài)口令身份認(rèn)證系統(tǒng)的相應(yīng)頁(yè)面,身份鑒別完成后,再將用戶的訪問(wèn)請(qǐng)求,重定向至用戶所請(qǐng)求訪問(wèn)的網(wǎng)銀業(yè)務(wù)系統(tǒng)。
(4)重定向管理:根據(jù)配置項(xiàng)確定將用戶通過(guò)網(wǎng)上銀行業(yè)務(wù)系統(tǒng)發(fā)來(lái)的重定向后的訪問(wèn)請(qǐng)求的訪問(wèn)地址,包括將訪問(wèn)網(wǎng)上銀行業(yè)務(wù)系統(tǒng)資源的請(qǐng)求重定向到數(shù)字證書身份認(rèn)證系統(tǒng)或動(dòng)態(tài)口令身份認(rèn)證系統(tǒng),以及將訪問(wèn)(數(shù)字證書或動(dòng)態(tài)口令)身份認(rèn)證系統(tǒng)的請(qǐng)求在身份認(rèn)證通過(guò)后重定向到原先訪問(wèn)的網(wǎng)上銀行業(yè)務(wù)系統(tǒng)資源。
(5)訪問(wèn)統(tǒng)計(jì):記錄來(lái)自網(wǎng)上銀行業(yè)務(wù)系統(tǒng)的請(qǐng)求,為將來(lái)實(shí)施大數(shù)據(jù)分析積累日志數(shù)據(jù)。
特別地,為了降低系統(tǒng)之間的耦合程度,身份認(rèn)證轉(zhuǎn)接系統(tǒng)與其他系統(tǒng)的對(duì)接使用“注冊(cè)”機(jī)制,為其他系統(tǒng)分配應(yīng)用標(biāo)識(shí)并進(jìn)行維護(hù)。
3 設(shè)計(jì)實(shí)現(xiàn)
3.1 系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)如圖1所示。
其中,身份認(rèn)證轉(zhuǎn)接服務(wù)器用于與網(wǎng)上銀行系統(tǒng)與異構(gòu)的身份認(rèn)證服務(wù)之間對(duì)接,向網(wǎng)上銀行系統(tǒng)提供統(tǒng)一的身份認(rèn)證服務(wù)接口;訪問(wèn)令牌管理服務(wù)器用于生成和管理訪問(wèn)令牌;應(yīng)用管理服務(wù)器用于向管理者提供系統(tǒng)管理界面,管理功能包括用戶管理、應(yīng)用配置等等;數(shù)字證書身份認(rèn)證系統(tǒng)和動(dòng)態(tài)口令身份認(rèn)證系統(tǒng)分別提供基于數(shù)字證書和基于動(dòng)態(tài)口令的身份認(rèn)證功能;消息中間件服務(wù)器用于各服務(wù)器之間的消息交互。
3.2 運(yùn)行流程
系統(tǒng)主要承擔(dān)身份認(rèn)證的轉(zhuǎn)接服務(wù),參與的執(zhí)行主體主要包括客戶端、網(wǎng)上銀行業(yè)務(wù)系統(tǒng)、身份認(rèn)證轉(zhuǎn)接系統(tǒng)和身份認(rèn)證服務(wù)系統(tǒng)。其中,用戶通過(guò)客戶端發(fā)起訪問(wèn)請(qǐng)求,并接收來(lái)自網(wǎng)上銀行業(yè)務(wù)系統(tǒng)的響應(yīng)。系統(tǒng)的工作流程,如圖2和圖3所示。
系統(tǒng)的具體流程分為幾步。
步驟s101:客戶端發(fā)送訪問(wèn)請(qǐng)求給網(wǎng)上銀行業(yè)務(wù)系統(tǒng)。
步驟s102:網(wǎng)上銀行業(yè)務(wù)系統(tǒng)判斷訪問(wèn)請(qǐng)求中是否帶有用戶身份憑證令牌,如果是,將令牌通過(guò)身份認(rèn)證轉(zhuǎn)接系統(tǒng)發(fā)給令牌管理系統(tǒng)。否則,執(zhí)行步驟s109。
步驟s103:令牌管理系統(tǒng)判斷令牌是否在已分發(fā)的令牌列表中。如果是,執(zhí)行步驟s104。否則,通過(guò)身份認(rèn)證轉(zhuǎn)接系統(tǒng)發(fā)送“令牌無(wú)效”消息給網(wǎng)上銀行業(yè)務(wù)系統(tǒng),網(wǎng)上銀行業(yè)務(wù)系統(tǒng)可據(jù)此拒絕訪問(wèn)請(qǐng)求,結(jié)束。
步驟s104:令牌管理系統(tǒng)判斷令牌是否已過(guò)期,如果是,需要重新進(jìn)行身份認(rèn)證,執(zhí)行步驟s105。否則,通過(guò)身份認(rèn)證轉(zhuǎn)接系統(tǒng)發(fā)送“令牌有效”消息給網(wǎng)上銀行業(yè)務(wù)系統(tǒng),執(zhí)行步驟s108。
步驟s105:身份認(rèn)證轉(zhuǎn)接系統(tǒng)根據(jù)令牌應(yīng)用標(biāo)識(shí)和指定認(rèn)證方信息查詢確定要使用的認(rèn)證服務(wù)(動(dòng)態(tài)口令或數(shù)字證書),并向所確定的認(rèn)證服務(wù)發(fā)送詢問(wèn)用戶登錄狀態(tài)請(qǐng)求。
步驟s106:認(rèn)證服務(wù)根據(jù)令牌檢索對(duì)應(yīng)用戶的登錄狀態(tài),生成用戶登錄狀態(tài)響應(yīng),返回詢問(wèn)用戶登錄狀態(tài)響應(yīng)給系統(tǒng)。
步驟s107:身份認(rèn)證轉(zhuǎn)接系統(tǒng)根據(jù)返回的詢問(wèn)用戶登錄狀態(tài)響應(yīng)判斷令牌是否有效,如果是,發(fā)送“令牌有效”消息給網(wǎng)上銀行業(yè)務(wù)系統(tǒng),執(zhí)行步驟s108。否則,發(fā)送“令牌無(wú)效”消息給網(wǎng)上銀行業(yè)務(wù)系統(tǒng),執(zhí)行步驟s109。
步驟s108:網(wǎng)上銀行業(yè)務(wù)系統(tǒng)根據(jù)訪問(wèn)請(qǐng)求中的信息、令牌以及預(yù)設(shè)策略,返回相應(yīng)的資源給客戶端,客戶端獲取資源,結(jié)束。
步驟s109:網(wǎng)上銀行業(yè)務(wù)系統(tǒng)根據(jù)應(yīng)用標(biāo)識(shí)符生成第一認(rèn)證請(qǐng)求,并發(fā)送第一認(rèn)證請(qǐng)求給系統(tǒng)。
具體地,應(yīng)用標(biāo)識(shí)符是網(wǎng)上銀行業(yè)務(wù)系統(tǒng)與身份認(rèn)證轉(zhuǎn)接系統(tǒng)對(duì)接時(shí)生成的。
步驟s110:身份認(rèn)證轉(zhuǎn)接系統(tǒng)根據(jù)第一認(rèn)證請(qǐng)求中的應(yīng)用標(biāo)識(shí)符判斷是否為合法的認(rèn)證請(qǐng)求,如果是,執(zhí)行步驟s111。否則,發(fā)送“應(yīng)用標(biāo)識(shí)符無(wú)效”消息給網(wǎng)上銀行業(yè)務(wù)系統(tǒng),網(wǎng)上銀行業(yè)務(wù)系統(tǒng)可據(jù)此拒絕向客戶端返回資源,返回步驟s101。
步驟s111:身份認(rèn)證轉(zhuǎn)接系統(tǒng)根據(jù)應(yīng)用標(biāo)識(shí)符、授權(quán)方式、授權(quán)范圍、強(qiáng)化身份認(rèn)證服務(wù)地址、認(rèn)證方式生成符合注冊(cè)協(xié)議的第一認(rèn)證請(qǐng)求響應(yīng),并將第一認(rèn)證請(qǐng)求響應(yīng)發(fā)送給網(wǎng)上銀行業(yè)務(wù)系統(tǒng)。
步驟s112:網(wǎng)上銀行業(yè)務(wù)系統(tǒng)根據(jù)符合協(xié)議的第一認(rèn)證請(qǐng)求響應(yīng)和第一訪問(wèn)權(quán)限列表生成第二認(rèn)證請(qǐng)求,發(fā)送包含應(yīng)用標(biāo)識(shí)符和第一訪問(wèn)權(quán)限列表的第二認(rèn)證請(qǐng)求給系統(tǒng)。
步驟s113:身份認(rèn)證轉(zhuǎn)接系統(tǒng)根據(jù)應(yīng)用標(biāo)識(shí)符查詢網(wǎng)上銀行業(yè)務(wù)系統(tǒng)指定的身份認(rèn)證方,并重定向?yàn)g覽器到指定身份認(rèn)證方的身份認(rèn)證界面。
步驟s114:客戶端顯示身份認(rèn)證頁(yè)面,并接收用戶信息,接收到用戶信息后,將用戶認(rèn)證信息返回給指定身份認(rèn)證方。
步驟s115:指定身份認(rèn)證方接收用戶信息,并對(duì)用戶信息進(jìn)行認(rèn)證,判斷是否認(rèn)證通過(guò),如果是,發(fā)送“身份認(rèn)證通過(guò)”消息給身份認(rèn)證轉(zhuǎn)接系統(tǒng),執(zhí)行步驟s116。否則,發(fā)送“認(rèn)證未通過(guò)”消息給身份認(rèn)證轉(zhuǎn)接系統(tǒng),身份認(rèn)證轉(zhuǎn)接系統(tǒng)“發(fā)送身份認(rèn)證未通過(guò)”消息給網(wǎng)上銀行業(yè)務(wù)系統(tǒng),網(wǎng)上銀行業(yè)務(wù)系統(tǒng)可據(jù)此拒絕客戶端訪問(wèn)。
步驟s116:系統(tǒng)保存用戶信息,完成分發(fā)授權(quán)碼,鑒別授權(quán)碼,分發(fā)訪問(wèn)令牌和令牌,生成包含令牌的響應(yīng)消息,并發(fā)送令牌給網(wǎng)上銀行系統(tǒng),網(wǎng)上銀行系統(tǒng)返回步驟s101。
具體地,步驟s116包括幾個(gè)方面。
步驟s116-1:系統(tǒng)接收第二訪問(wèn)權(quán)限列表并生成授權(quán)碼和授權(quán)碼有效時(shí)間,同時(shí)將應(yīng)用標(biāo)識(shí)符、授權(quán)碼和第二訪問(wèn)權(quán)限列表對(duì)應(yīng)儲(chǔ)存。
其中,第二訪問(wèn)權(quán)限列表為根據(jù)預(yù)定策略生成的權(quán)限列表,除去第一權(quán)限列表中系統(tǒng)未定義的元素,即強(qiáng)化身份認(rèn)證自定義生成的權(quán)限列表和第一權(quán)限列表的交集。
步驟s116-2:系統(tǒng)根據(jù)預(yù)存的重定向URL向網(wǎng)上銀行系統(tǒng)回傳授權(quán)碼。
步驟s116-3:網(wǎng)上銀行系統(tǒng)將應(yīng)用標(biāo)識(shí)符和應(yīng)用密碼通過(guò)預(yù)設(shè)加密運(yùn)算進(jìn)行加密生成應(yīng)用密文信息。
其中,應(yīng)用密碼根據(jù)網(wǎng)上銀行系統(tǒng)注冊(cè)時(shí),系統(tǒng)分配的應(yīng)用ID和注冊(cè)時(shí)輸入的初始密碼進(jìn)行散列運(yùn)算生成。
步驟s116-4:網(wǎng)上銀行系統(tǒng)根據(jù)應(yīng)用密文信息、第一重定向URL和授權(quán)碼生成獲取令牌請(qǐng)求,并將生成的獲取令牌請(qǐng)求發(fā)送給系統(tǒng)。
步驟s116-5:系統(tǒng)從接收到的獲取令牌請(qǐng)求中獲取應(yīng)用密文信息,并對(duì)應(yīng)用密文信息進(jìn)行解密得到應(yīng)用標(biāo)識(shí)符和應(yīng)用密碼。
步驟s116-6:系統(tǒng)根據(jù)應(yīng)用標(biāo)識(shí)符和應(yīng)用密碼判斷應(yīng)用是否合法,如果是,執(zhí)行步驟s117-7。否則,發(fā)送認(rèn)證失敗信息,結(jié)束。
步驟s116-7:系統(tǒng)判斷是否可以在系統(tǒng)里查詢到與第一重定向URL和授權(quán)碼匹配的信息,如果是,執(zhí)行步驟s117-8。否則,發(fā)送認(rèn)證失敗信息給網(wǎng)上銀行系統(tǒng),結(jié)束。
步驟s116-8:系統(tǒng)根據(jù)授權(quán)碼獲取授權(quán)碼過(guò)期時(shí)間,并判斷授權(quán)碼是否過(guò)期,如果過(guò)期,發(fā)送授權(quán)碼過(guò)期信息給網(wǎng)上銀行系統(tǒng),結(jié)束。如果沒(méi)過(guò)期,執(zhí)行步驟s117-9。
具體地,系統(tǒng)獲取系統(tǒng)的當(dāng)前時(shí)間,判斷授權(quán)碼過(guò)期時(shí)間是否晚于系統(tǒng)當(dāng)前時(shí)間,如果是,系統(tǒng)判定授權(quán)碼在有效期內(nèi),執(zhí)行步驟s117-9。否則,系統(tǒng)判定授權(quán)碼過(guò)期,向網(wǎng)上銀行系統(tǒng)返回授權(quán)碼過(guò)期信息,結(jié)束。
步驟s116-9:系統(tǒng)生成令牌、訪問(wèn)令牌、令牌過(guò)期時(shí)間,根據(jù)授權(quán)碼獲取第二訪問(wèn)權(quán)限列表,將令牌、訪問(wèn)令牌、第二訪問(wèn)權(quán)限列表和令牌過(guò)期時(shí)間對(duì)應(yīng)儲(chǔ)存。
步驟s116-10:系統(tǒng)根據(jù)令牌、訪問(wèn)令牌、訪問(wèn)令牌過(guò)期時(shí)間生成獲取訪問(wèn)令牌響應(yīng),并將令牌響應(yīng)發(fā)送給網(wǎng)上銀行系統(tǒng)。
3.3 實(shí)現(xiàn)驗(yàn)證
使用Python語(yǔ)言,由Django、MongoDB、Celery、RestMQ、Redis等一系列開(kāi)源項(xiàng)目組成開(kāi)發(fā)框架,實(shí)現(xiàn)了上述設(shè)計(jì)方案的原型系統(tǒng)。系統(tǒng)生成的身份認(rèn)證憑據(jù)采用JSON格式,形如:
{"iss":"https://server.example.com","sub":"24400320","aud":"s6BhdRkqt3","nonce":"n-0S6_WzA2Mj","exp":1311281970,"iat":1311280970,"auth_time":1311280969,"acr":"urn:mace:incommon:iap:silver"}
其中"iss":"https://server.example.com"表明指定認(rèn)證方服務(wù)器標(biāo)識(shí)為https://server.example.com;"sub":"24400320"表明用戶信息為24400320;"aud":"s6BhdRkqt3"表明應(yīng)用服務(wù)器標(biāo)識(shí)為s6BhdRkqt3;"exp":1311281970表明身份認(rèn)證憑據(jù)有效期;"iat":1311280970,表明發(fā)放身份認(rèn)證ID時(shí)間"auth_time":1311280969表明鑒別終端用戶時(shí)間。
以下是系統(tǒng)生成的訪問(wèn)令牌實(shí)例:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{"access_token":"SlAV32hkKG","token_type":"Bearer","expires_in":3600,"iss":"https://server.example.com","sub":"24400320","aud":"s6BhdRkqt3","nonce":"n-0S6_WzA2Mj","exp":1311281970,"iat":1311280970,"auth_time":1311280969,"acr":"urn:mace:incommon:iap:silver""id_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6qJp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJNqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7TpdQyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoSK5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg"}
4 結(jié)束語(yǔ)
不斷涌現(xiàn)的新型身份認(rèn)證解決方案,在集成到網(wǎng)上銀行系統(tǒng)的過(guò)程中,存在應(yīng)用接口、交互界面不統(tǒng)一等問(wèn)題。本文針對(duì)當(dāng)前網(wǎng)上銀行身份認(rèn)證升級(jí)改造需求,結(jié)合當(dāng)前成熟的認(rèn)證平臺(tái),基于開(kāi)閉原則設(shè)計(jì)實(shí)現(xiàn)了適用于網(wǎng)上銀行的身份認(rèn)證轉(zhuǎn)接服務(wù),采用REST風(fēng)格的分布式架構(gòu),與網(wǎng)上銀行、手機(jī)銀行、互聯(lián)網(wǎng)支付等支付應(yīng)用所采用的主流技術(shù)架構(gòu)相匹配;采用成熟的安全策略,比如支付標(biāo)記化,減少了系統(tǒng)的安全漏洞;采用統(tǒng)一的開(kāi)發(fā)框架,一方面降低了系統(tǒng)開(kāi)發(fā)的復(fù)雜度,另一方面也為遷移到云計(jì)算環(huán)境打下了良好的基礎(chǔ)。
此外,基于開(kāi)閉原則的網(wǎng)上銀行身份認(rèn)證服務(wù)方案,不僅能夠與當(dāng)前金融行業(yè)標(biāo)準(zhǔn)規(guī)定的多種身份認(rèn)證機(jī)制集成,還能夠靈活支持多因素身份認(rèn)證模式,有助于減少工程的復(fù)雜度,避免影響現(xiàn)有系統(tǒng)的服務(wù)穩(wěn)定性。同時(shí),也具有很強(qiáng)的可行性和實(shí)用性,體現(xiàn)了一定的安全性、先進(jìn)性和合規(guī)性。
參考文獻(xiàn)
[1] JR/T 0068-2012,網(wǎng)上銀行系統(tǒng)信息安全通用規(guī)范[S].
[2] 戈泉月,車力軍.基于多因素認(rèn)證的網(wǎng)絡(luò)安全支付模式研究[J].信息網(wǎng)絡(luò)安全, 2015(12):48-53.
[3] Panos C, Malliaros S, Ntantogian C, et al. A Security Evaluation of FIDOs UAF Protocol in Mobile and Embedded Devices[C]// International Tyrrhenian Workshop on Digital Communication. Springer, Cham, 2017:127-142.
[4] 郭榮.淺談軟件設(shè)計(jì)模式中的設(shè)計(jì)原則[J].信息安全與技術(shù),2014(11):93-94.
[5] JR/T 0149-2016,中國(guó)金融移動(dòng)支付 支付標(biāo)記化技術(shù)規(guī)范[S].
[6] Hammerlahav E, Editor. The OAuth 2.0 Protocol[J].2010.
[7] 王阿林.基于REST開(kāi)放標(biāo)準(zhǔn)的北向接口動(dòng)態(tài)API研究與實(shí)現(xiàn)[D].北京:北京郵電大學(xué), 2017.