每個(gè)應(yīng)用系統(tǒng)都有其自身的用戶系統(tǒng)和認(rèn)證方式。程序員在為某個(gè)應(yīng)用系統(tǒng)編寫接入其它應(yīng)用系統(tǒng)的程序代碼時(shí),常常為用戶認(rèn)證大傷腦筋。問(wèn)題主要表現(xiàn)在以下幾方面:
1.讓最終用戶頻繁登錄? 但這似乎是一個(gè)讓用戶很難接受的解決方案。mda.com
2.在代碼中內(nèi)置用戶名和密碼? 但代碼需要隨用戶和密碼的變化經(jīng)常維護(hù),同時(shí)在很多場(chǎng)合下,用戶名和密碼對(duì)于程序員來(lái)說(shuō)是不可見的。
如何解決這一問(wèn)題呢?我們從目前和未來(lái)的應(yīng)用發(fā)展趨勢(shì)判斷認(rèn)為,應(yīng)當(dāng)開發(fā)一個(gè)統(tǒng)一身份認(rèn)證服務(wù),以解決這一應(yīng)用集成中碰到的用戶認(rèn)證問(wèn)題。這個(gè)服務(wù)需要達(dá)到以下功能和目標(biāo):
1. 支持Web服務(wù)技術(shù)框架,使得在對(duì)各個(gè)應(yīng)用系統(tǒng)實(shí)施基于Web服務(wù)的應(yīng)用集成(EAI/B2Bi)的時(shí)候,能夠使用這個(gè)統(tǒng)一身份認(rèn)證服務(wù),進(jìn)行身份認(rèn)證。
2. 方便使用,能夠盡可能地利用現(xiàn)有系統(tǒng)的身份認(rèn)證模塊及現(xiàn)有的用戶設(shè)置和權(quán)限設(shè)置,盡量保護(hù)現(xiàn)有的投資,減少新用戶設(shè)置和權(quán)限設(shè)置的費(fèi)用。同時(shí)避免對(duì)現(xiàn)有系統(tǒng)進(jìn)行大規(guī)模的修改。
3. 具有良好的擴(kuò)展性和可集成性,不僅能支持現(xiàn)有的應(yīng)用系統(tǒng)及用戶系統(tǒng),當(dāng)有新的企業(yè)應(yīng)用被部署或開發(fā)的時(shí)候,這個(gè)統(tǒng)一身份認(rèn)證服務(wù)還可以作為其身份認(rèn)證模塊的形式工作。也就是說(shuō),新的企業(yè)應(yīng)用可以不自帶用戶系統(tǒng),可以通過(guò)集成該服務(wù)的形式來(lái)實(shí)現(xiàn)等價(jià)的功能。
4. 應(yīng)當(dāng)具備靈活和方便的使用模式,使用者可以通過(guò)多種方式自由地使用該統(tǒng)一身份認(rèn)證服務(wù)。
解決方案
根據(jù)這個(gè)統(tǒng)一身份認(rèn)證服務(wù)的目標(biāo)和初步的功能定義,將這個(gè)服務(wù)設(shè)計(jì)為圖1所示。
該服務(wù)主要需要具備三項(xiàng)功能:
1. 用戶注冊(cè),用戶在統(tǒng)一身份認(rèn)證服務(wù)中注冊(cè)賬號(hào)。以后這個(gè)賬號(hào)可以在所有使用統(tǒng)一身份認(rèn)證服務(wù)的應(yīng)用系統(tǒng)中使用。
2. 賬號(hào)關(guān)聯(lián)。如果用戶之前已經(jīng)在相關(guān)的應(yīng)用系統(tǒng)中擁有賬號(hào),同時(shí)也已經(jīng)設(shè)置了相應(yīng)的權(quán)限,那么用戶能夠?qū)⑦@些應(yīng)用系統(tǒng)的賬號(hào)與統(tǒng)一身份認(rèn)證服務(wù)的賬號(hào)進(jìn)行關(guān)聯(lián),使得用戶登錄統(tǒng)一身份認(rèn)證服務(wù)之后,就能夠自動(dòng)使用相關(guān)的應(yīng)用系統(tǒng)用戶來(lái)訪問(wèn)應(yīng)用系統(tǒng)。