監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉

將Web服務(wù)用于電子交易的單點(diǎn)登錄

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

AMTeam.org

將Web服務(wù)用于電子交易的單點(diǎn)登錄 

--分布式計(jì)算機(jī)的SOAP認(rèn)證


Frank Cohen(fcohen@pushtotest.com

總裁,PushToTest

2002 年 1 月

Web 應(yīng)用用戶在使用 Web 站點(diǎn)時(shí)期望著無(wú)縫的集成和互操作性。然而驅(qū)動(dòng)該站點(diǎn)的后端系統(tǒng)是各個(gè)服務(wù)器軟件包的聚合物。本個(gè)案研究展示了怎樣用 Web 服務(wù)將“電子客戶關(guān)系管理”(electronic Customer Relationship Management,eCRM)應(yīng)用集成到現(xiàn)有電子交易市場(chǎng)應(yīng)用,從而為用戶提供單點(diǎn)登錄的體驗(yàn)。

機(jī)場(chǎng)究竟什么時(shí)候真正完工?

構(gòu)建因特網(wǎng)和內(nèi)部網(wǎng)與建設(shè)一個(gè)機(jī)場(chǎng)非常相似。為滿足乘客、航線以及設(shè)施的需求所需要做的機(jī)場(chǎng)的擴(kuò)建和改造證明了永恒運(yùn)動(dòng)確實(shí)存在。Web 站點(diǎn)通常以同樣的方式進(jìn)行擴(kuò)展;去年構(gòu)建的基本 Web 系統(tǒng)現(xiàn)在需要增加一組新的功能。可以通過(guò) SOAP 使集成新功能和新服務(wù)器軟件更容易,SOAP 是一種新的開(kāi)放標(biāo)準(zhǔn),這種標(biāo)準(zhǔn)使以前未能實(shí)現(xiàn)的集成的級(jí)別(往往需要做昂貴的、不可維護(hù)的工程方面的工作)得以實(shí)現(xiàn)。

本個(gè)案研究展示了怎樣用 Web 服務(wù)為用戶提供無(wú)縫且 輕松的單點(diǎn)登錄的體驗(yàn)。您將看到開(kāi)發(fā)小組怎樣用 Web 服務(wù)無(wú)縫地將 eCRM 應(yīng)用集成到現(xiàn)有電子交易市場(chǎng)應(yīng)用中。我展示了詳細(xì)的示例,這些示例源自 Switchouse 將 Inclusion 協(xié)作消息傳遞軟件集成到其 Web 站點(diǎn)所積累的經(jīng)驗(yàn)。這篇文章還提出了幾個(gè)在集成工程過(guò)程中所碰到的問(wèn)題,我希望您能夠避免。

減少在線消費(fèi)者市場(chǎng)的開(kāi)支

Switchouse 是 Web 上領(lǐng)先的消費(fèi)者市場(chǎng)之一,它致力于將上百萬(wàn)的消費(fèi)者匯集在一起,幫助他們找到新的且更好的方式來(lái)獲得他們想要的東西。與 eBay(一個(gè)很受歡迎的拍賣(mài)站點(diǎn))不同,Switchouse 使用戶能夠以固定價(jià)格購(gòu)買(mǎi)和出售二手娛樂(lè)品,比如:音樂(lè) CD、電影、視頻游戲以及書(shū)籍。Switchouse 從每一次交易中賺取一些酬金。典型的購(gòu)買(mǎi)結(jié)果一般是在 $10 - $15 這個(gè)范圍內(nèi)。Switchouse 需要有一種很便宜的方式來(lái)為它的用戶提供服務(wù)。

開(kāi)辦這個(gè)電子交易 Web 站點(diǎn)不久之后,Switchouse 管理層決定添加在線客戶關(guān)系管理(eCRM)服務(wù)以減少為用戶提供服務(wù)的開(kāi)銷(xiāo)。Switchouse 使用其 Web 站點(diǎn)的電子社區(qū)部分來(lái)提供成員對(duì)成員(member-to-member)的支持系統(tǒng)。

對(duì)于其公共和私有討論組、電子郵件公告以及通知,Switchouse 選擇將它們的對(duì) Inclusion 的 eCRM 軟件需求外包給系統(tǒng)集成商,加州洛斯拉圖斯的 Inclusion 公司。Inclusion 軟件以基于標(biāo)記的腳本語(yǔ)言為特征,使其腳本生成的頁(yè)面的觀感和 Switchouse 的電子交易站點(diǎn)頁(yè)面的觀感一致。

圖 1. Switchouse.com 主頁(yè)提供了登錄表單。


圖 1b. Inclusion 生成的 eCRM 頁(yè)面提供了登錄表單。


Inclusion 軟件提供一項(xiàng)稱(chēng)為 GateKeeper 的單點(diǎn)登錄 Web 服務(wù)。用戶可從 Switchouse 電子交易頁(yè)面登錄,也可從 Inclusion 生成的頁(yè)面登錄。Switchouse 計(jì)劃添加額外的功能,并且也使用同樣的單點(diǎn)登錄 Web 服務(wù)來(lái)集成這些功能。

集成系統(tǒng)主要關(guān)心的是帶給用戶良好的體驗(yàn)。經(jīng)驗(yàn)表明,Switchouse 用戶幾乎不能容忍緩慢的響應(yīng)時(shí)間,因此登錄系統(tǒng)需要實(shí)時(shí)地進(jìn)行工作。除此之外,Switchouse 還有這樣一些要求:

在一次會(huì)話過(guò)程中,只要求用戶輸入一次標(biāo)識(shí)和密碼。

用戶可以從任何頁(yè)面登錄。

登錄服務(wù)實(shí)時(shí)地進(jìn)行操作。一旦用戶單擊了登錄按鈕,應(yīng)在 5 秒內(nèi)作出響應(yīng)。

服務(wù)器間的通信是安全并經(jīng)過(guò)認(rèn)證的。

系統(tǒng)雙向地進(jìn)行交互操作。

系統(tǒng)是可擴(kuò)展的,從而為共享數(shù)據(jù)提供了一種通用的方式。

設(shè)計(jì)小組要關(guān)注兩個(gè)問(wèn)題。第一,系統(tǒng)將怎樣立即響應(yīng) Inclusion 生成的頁(yè)面上的登錄表單?第二,在將來(lái)某個(gè)時(shí)候,當(dāng)有更大量的數(shù)據(jù)需要傳遞時(shí),系統(tǒng)將怎樣進(jìn)行伸縮?

兩部分解決方案

解決方案分兩部分實(shí)現(xiàn)。第一,同步協(xié)議使用 HTTP POST 和重定向命令,從而使登錄看來(lái)是實(shí)時(shí)地發(fā)生的。第二,異步協(xié)議處理傳輸附加數(shù)據(jù)。我將先講述同步協(xié)議。

圖 2. GateKeeper 系統(tǒng)的同步部分。


腳本生成的頁(yè)面包含一個(gè)用來(lái)登錄的 HTML 表單。該表單提交到電子交易應(yīng)用服務(wù)器上的 KeyMaster servlet。一旦成功地完成登錄,返回的參數(shù)告訴 KeyMaster 將用戶重定向到什么地方。

清單 1:HTML 登錄表單
  

<FORM action="http://www.switchouse.com/keymaster.html" METHOD="POST">

    <INPUT type="text" size="10" maxlength="32" name="login_username">

    <INPUT type="password" size="10" maxlength="32" name="login_password"

    <input type="hidden" name="return" value="/switchouse/summary.html">

    <input type="hidden" name="submitKey" value="Log In">

</FORM&gt;

電子交易應(yīng)用服務(wù)器上的 KeyMaster servlet 驗(yàn)證用戶帳戶,并且以指向 eCRM 服務(wù)器上的 GateKeeper servlet 的重定向命令響應(yīng)表單請(qǐng)求。這個(gè)重定向命令看起來(lái)像這樣:

http://eCRMsite.inclusion.net/sq=%0A%12%38%31...%8B%9C&return=/switchouse/summary.html

sq 參數(shù)包含用戶數(shù)據(jù)。在基于 SOAP 的 Web 服務(wù)環(huán)境中,解密后的用戶數(shù)據(jù)看起來(lái)像這樣:

<gatekeeper&gt;

  <name&gt;Frank&lt;/name&gt;

  <password&gt;83jdiej&lt;/password&gt;

  <action&gt;sign-in&lt;/action&gt;

</gatekeeper&gt;

GateKeeper servlet 解密用戶數(shù)據(jù),將用戶登錄到 eCRM 應(yīng)用中,并且將用戶的瀏覽器重定向到返回頁(yè)面。雖然在這次事務(wù)中有重定向的頁(yè)面,但是用戶只看到帶有登錄表單的原始頁(yè)面以及用戶登錄后的返回頁(yè)面。這樣,用戶會(huì)感到很愉快。

異步協(xié)議

為了達(dá)到電子交易和 eCRM 服務(wù)器之間雙向交互的目標(biāo),GateKeeper 實(shí)施了異步協(xié)議。當(dāng)新用戶向電子交易站點(diǎn)注冊(cè)時(shí),Switchouse 使用異步 Web 服務(wù)。

新用戶的注冊(cè)通常包括姓名、地址、電話號(hào)碼、組關(guān)系以及作為新成員的權(quán)限。如果 URL 編碼的(URL-encoded)用戶數(shù)據(jù)多到長(zhǎng)于 2000 個(gè)字節(jié),同步方法將不保證仍能工作 — 許多瀏覽器會(huì)截?cái)嗪荛L(zhǎng)的 URL。GateKeeper 使用同步 Web 服務(wù)來(lái)接收最基本的用戶信息,使用異步 Web 服務(wù)來(lái)接收附加的用戶信息。

新用戶將注冊(cè)信息 — 姓名、地址等輸入到 HTML 表單。該表單提交到電子交易服務(wù)器,從而將新用戶數(shù)據(jù)插入到電子交易系統(tǒng)數(shù)據(jù)庫(kù)。此次提交返回一個(gè)重定向命令,它包含了一個(gè) GateKeeper XML 文檔。

<gatekeeper&gt;

  <name&gt;Frank&lt;/name&gt;

  <password&gt;83jdiej&lt;/password&gt;

  <action&gt;new-user&lt;/action&gt;

</gatekeeper&gt;

GateKeeper servlet 解密這個(gè) XML 文檔,將新用戶添加到 eCRM 服務(wù)器數(shù)據(jù)庫(kù),登錄該用戶,并將用戶重定向到返回頁(yè)面。所有過(guò)程在用戶看來(lái)都是實(shí)時(shí)的。

GateKeeper 還將一個(gè)條目添加到異步請(qǐng)求隊(duì)列中。該條目指示 GateKeeper 聯(lián)系電子交易服務(wù)器的 KeyMaster servlet,從而檢索用戶的擴(kuò)展的信息,包括公司、職稱(chēng)、電話號(hào)碼、部門(mén)名稱(chēng)、經(jīng)理姓名以及電子郵件地址。

<keymaster&gt;

  <name&gt;Frank&lt;/name&gt;

  <password&gt;83jdiej&lt;/password&gt;

  <action&gt;send-extended-info&lt;/action&gt;

</keymaster&gt;

KeyMaster 以擴(kuò)展的用戶信息向 GateKeeper 發(fā)出 Web 服務(wù)請(qǐng)求。

<gatekeeper&gt;

  <name&gt;Frank&lt;/name&gt;

  <password&gt;83jdiej&lt;/password&gt;

  <action&gt;update-user-info&lt;/action&gt;

  <company&gt;PushToTest.com&lt;/company&gt;

  <title&gt;Developer&lt;/title&gt;

  <phone&gt;408 374 7426&lt;/phone&gt;

  <department&gt;7&lt;/department&gt;

  <manager&gt;Fred Gibbons&lt;/manager&gt;

  <email&gt;fcohen@pushtotest.com&lt;/email&gt;

</gatekeeper&gt;

交換新用戶的數(shù)據(jù)、更新現(xiàn)有用戶、刪除用戶以及報(bào)告錯(cuò)誤都由同一系統(tǒng)完成。例如,響應(yīng)的 XML 文檔可能是一條錯(cuò)誤消息。

<gatekeeper&gt;

  <action&gt;error&lt;/action&gt;

  <error&gt;400&gt;</error&gt;

  <error_description&gt;KeyMaster received an XML document that

     will not decode&lt;/error_description&gt;

  <timestamp&gt;38274883&lt;/timestamp&gt;

</gatekeeper&gt;

使用這些同步和異步 Web 服務(wù),系統(tǒng)實(shí)現(xiàn)了單點(diǎn)登錄的目的。新用戶即時(shí)訪問(wèn)了電子交易站點(diǎn)。該異步系統(tǒng)所測(cè)出的延遲通常少于五秒。用戶感到很愉快。

只有開(kāi)發(fā)者才應(yīng)吸取的經(jīng)驗(yàn)

我會(huì)對(duì)設(shè)計(jì)單點(diǎn)登錄系統(tǒng)、實(shí)現(xiàn) Web 服務(wù)和偶爾做不定期的維護(hù)感興趣。但是回到現(xiàn)實(shí)世界,我卻碰到了幾個(gè)需要解決的問(wèn)題。

單向的防火墻

對(duì)于一條即將啟動(dòng)的新生產(chǎn)線,電子設(shè)備的廠商選擇用 Inclusion 軟件來(lái)構(gòu)建安全的外部網(wǎng),從而來(lái)分發(fā)產(chǎn)品文檔,并從其區(qū)域銷(xiāo)售經(jīng)理處接收反饋信息。廠商編寫(xiě)了 KeyMaster servlet 以根據(jù)雇員的內(nèi)部 LDAP 目錄來(lái)驗(yàn)證用戶。

為了與這個(gè)啟動(dòng)進(jìn)度表相吻合,廠商選擇 Inclusion 的托管的“應(yīng)用服務(wù)提供商”(Application Service Provider,ASP)服務(wù)來(lái)開(kāi)始,然后再將 Inclusion 軟件合并到其數(shù)據(jù)中心。KeyMaster 和 LDAP 目錄駐留在廠商網(wǎng)絡(luò)內(nèi)部,Inclusion 軟件駐留在外部的網(wǎng)絡(luò)。遺憾的是,雖然廠商的網(wǎng)絡(luò)允許出站的 HTTP 請(qǐng)求通過(guò),但是網(wǎng)絡(luò)卻阻塞入站的 HTTP 請(qǐng)求。

圖 3. 單向的防火墻


當(dāng)新用戶登錄時(shí),KeyMaster 向 GateKeeper 發(fā)送 URL 編碼的請(qǐng)求。然后,GateKeeper 嘗試向 KeyMaster 發(fā)出 Web 服務(wù)請(qǐng)求,請(qǐng)求附加的用戶信息。這個(gè) GateKeeper 請(qǐng)求接收一個(gè)重定向到基于 SecureID 的認(rèn)證系統(tǒng)的重定向命令,廠商用這個(gè)認(rèn)證系統(tǒng)來(lái)保護(hù)它的網(wǎng)絡(luò)。

單點(diǎn)登錄系統(tǒng)具有雙向的特性,卻不能穿越防火墻。起先,我想到要求廠商的 IT 部門(mén)開(kāi)放一條到內(nèi)部 KeyMaster 服務(wù)器的特殊的沒(méi)有保護(hù)的連接。但當(dāng)我站在他們的立場(chǎng),考慮一下我是否會(huì)為了一些特殊的情況而開(kāi)放自己的網(wǎng)絡(luò)時(shí),我否定了這種想法。

解決方案是改變呼叫處理流程,使得只有 KeyMaster 來(lái)發(fā)起事務(wù)。當(dāng)新用戶注冊(cè)以及用戶登錄時(shí),運(yùn)行于廠商網(wǎng)絡(luò)的 KeyMaster 將聯(lián)系 GateKeeper。

先計(jì)劃集成

現(xiàn)在有六家公司使用了 GateKeeper 單點(diǎn)登錄系統(tǒng)。Inclusion 很早就發(fā)現(xiàn)了一種日漸顯現(xiàn)的趨勢(shì):?jiǎn)吸c(diǎn)登錄工程要求按時(shí)實(shí)施最優(yōu)的資源配置和計(jì)劃編制。開(kāi)發(fā) Web 服務(wù)要求有基本的代碼編寫(xiě)、XML 解析以及帶有目錄服務(wù)(包括 LDAP 服務(wù))的系統(tǒng)集成方面的知識(shí)。很少有工程師具備所有的這些技能。根據(jù)我的經(jīng)驗(yàn),一個(gè)中級(jí)的工程師設(shè)計(jì)出單點(diǎn)登錄的 Web 服務(wù)要三到五周時(shí)間。代碼交付通常在四周以后,如果要進(jìn)行測(cè)試,還需要另加兩周時(shí)間。

可靠的安全

本文所描述的單點(diǎn)登錄 Web 服務(wù)還要插入 HTTPS 安全協(xié)議。GateKeeper 和 KeyMaster 協(xié)議在安全的 SSL 連接之上進(jìn)行操作。瀏覽器和 Web 服務(wù)器軟件通常負(fù)責(zé)提供 SSL 加密和認(rèn)證。

當(dāng)前的 SOAP 2.2 規(guī)范沒(méi)有定義安全和認(rèn)證協(xié)議。但是,很多工程師期望最終的 SOAP 規(guī)范將 SSL 定義為安全地發(fā)出 Web 服務(wù)請(qǐng)求的一種手段。OpenSSL.org 是 SSL 技術(shù)很好的資料來(lái)源,并且是免費(fèi)的。

今天是 DTD 模式,明天將是 XML 模式

此處介紹的單點(diǎn)登錄系統(tǒng)在 Web 服務(wù)調(diào)用期間交換 XML 文檔。該系統(tǒng)設(shè)計(jì)于 1998 年,大大早于 XML 庫(kù)(SAX 和 DOM 解析器)被廣泛使用。最初的實(shí)現(xiàn)用 Java 編寫(xiě),使用來(lái)自于 IBM alphaWorks 的 SAX 庫(kù)。雖然 SAX 很強(qiáng)大,但是中級(jí)軟件開(kāi)發(fā)者使用 SAX 還是有難度。許多回調(diào)方法必須被實(shí)現(xiàn),這要求開(kāi)發(fā)者透徹理解 XML 和“文檔類(lèi)型定義”(Document Type Definition,DTD)語(yǔ)法。

下一代單點(diǎn)登錄系統(tǒng)將使用“SOAP 和 XML 模式”來(lái)定義請(qǐng)求和響應(yīng)調(diào)用的參數(shù)。Java 實(shí)現(xiàn)將使用 JDOM 來(lái)創(chuàng)建和處理 XML 文檔。JDOM 是簡(jiǎn)單的 API,它運(yùn)行在 SAX 和 DOM 解析器之上,提供更類(lèi)似于 JAVA 的、對(duì) XML 數(shù)據(jù)進(jìn)行處理的方法。

我是 KeyMaster。不,我是 KeyMaster。
根據(jù)我的經(jīng)驗(yàn),工程師成功地完成第一個(gè)服務(wù)器軟件集成工程后,接下來(lái)將會(huì)有更多的集成工程。這個(gè)領(lǐng)域看起來(lái)容易了一些。在增加以信用卡作為促銷(xiāo)的搭買(mǎi)品的公司、在激勵(lì)計(jì)劃(比如航線里程積點(diǎn)系統(tǒng))和調(diào)查系統(tǒng)的集成中,GateKeeper/KeyMaster Web 服務(wù)找到了用武之地。

首先這提出了一個(gè)潛在的問(wèn)題:作為一家想要將另一家公司的服務(wù)集成到自己系統(tǒng)的電子交易公司,當(dāng)其它公司提供了它們自己的服務(wù)器對(duì)服務(wù)器的通信系統(tǒng)時(shí)會(huì)發(fā)生什么呢?誰(shuí)是 GateKeeper,誰(shuí)是 KeyMaster?通過(guò)使所有的系統(tǒng)既是客戶又是服務(wù)器,Web 服務(wù)解決了這個(gè)難題。入站請(qǐng)求與出站響應(yīng)一樣通過(guò)相同的協(xié)議被傳送。

結(jié)束語(yǔ)

在許多現(xiàn)代服務(wù)器系統(tǒng)中,互操作性以對(duì)公共目錄的訪問(wèn)開(kāi)始,從而在系統(tǒng)間為用戶提供安全的單點(diǎn)登錄機(jī)制。然后,互操作性遍布于數(shù)據(jù)同步、報(bào)告和電子交易。通過(guò)實(shí)施同步和異步的基于 Web 服務(wù)的服務(wù)器對(duì)服務(wù)器通信協(xié)議,用戶感到很愉快,并且所實(shí)現(xiàn)的軟件是可維護(hù)的。
 
參考資料

  • 請(qǐng)單擊本文頂部或底部的討論參加本文的討論論壇
  • Load,一個(gè)免費(fèi)的開(kāi)放源代碼的實(shí)用程序用來(lái)測(cè)試基于 SOAP 的 Web 服務(wù)的可伸縮性和性能。
  • Web 服務(wù)定義語(yǔ)言(WSDL)規(guī)范。
  • SOAP 協(xié)議規(guī)范。
  • 公開(kāi)可用的 Web 服務(wù)的列表。
  • 請(qǐng)看看 Switchouse.com 的觀感。



關(guān)于作者

Frank Cohen 是一位軟件企業(yè)家,他自 1975 年以來(lái)就開(kāi)始為世界范圍內(nèi)取得成功的個(gè)人電腦領(lǐng)域做出自己的貢獻(xiàn)。他最初為微型計(jì)算機(jī)編寫(xiě)操作系統(tǒng),幫助建立視頻游戲產(chǎn)業(yè),協(xié)助建立 Norton Utilities 特許,領(lǐng)導(dǎo) Apple 進(jìn)軍中間件和因特網(wǎng)技術(shù)領(lǐng)域,最近他還成為了 Sun Community Server、Inclusion.net 和 TuneUp.com 的首席體系架構(gòu)設(shè)計(jì)師。Frank 負(fù)責(zé) Load 的維護(hù)并經(jīng)營(yíng)著 PushToTest,一家提供可伸縮性和性能測(cè)試解決方案的公司。更多的信息可以從
www.PushToTest.com 獲得。您可以通過(guò) fcohen@pushtotest.com 與 Frank 聯(lián)系。

發(fā)布:2007-03-25 13:26    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
石家莊OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢