監(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)登錄

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

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

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

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

減少在線消費(fèi)者市場的開支

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

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

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

圖 1. Switchouse.com 主頁提供了登錄表單。


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


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

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

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

用戶可以從任何頁面登錄。

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

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

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

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

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

兩部分解決方案

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

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


腳本生成的頁面包含一個用來登錄的 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)表單請求。這個重定向命令看起來像這樣:

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ù)看起來像這樣:

<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)用中,并且將用戶的瀏覽器重定向到返回頁面。雖然在這次事務(wù)中有重定向的頁面,但是用戶只看到帶有登錄表單的原始頁面以及用戶登錄后的返回頁面。這樣,用戶會感到很愉快。

異步協(xié)議

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

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

新用戶將注冊信息 — 姓名、地址等輸入到 HTML 表單。該表單提交到電子交易服務(wù)器,從而將新用戶數(shù)據(jù)插入到電子交易系統(tǒng)數(shù)據(jù)庫。此次提交返回一個重定向命令,它包含了一個 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 解密這個 XML 文檔,將新用戶添加到 eCRM 服務(wù)器數(shù)據(jù)庫,登錄該用戶,并將用戶重定向到返回頁面。所有過程在用戶看來都是實(shí)時(shí)的。

GateKeeper 還將一個條目添加到異步請求隊(duì)列中。該條目指示 GateKeeper 聯(lián)系電子交易服務(wù)器的 KeyMaster servlet,從而檢索用戶的擴(kuò)展的信息,包括公司、職稱、電話號碼、部門名稱、經(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ù)請求。

<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)告錯誤都由同一系統(tǒng)完成。例如,響應(yīng)的 XML 文檔可能是一條錯誤消息。

<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í)訪問了電子交易站點(diǎn)。該異步系統(tǒng)所測出的延遲通常少于五秒。用戶感到很愉快。

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

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

單向的防火墻

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

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

圖 3. 單向的防火墻


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

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

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

先計(jì)劃集成

現(xiàn)在有六家公司使用了 GateKeeper 單點(diǎn)登錄系統(tǒng)。Inclusion 很早就發(fā)現(xiàn)了一種日漸顯現(xiàn)的趨勢:單點(diǎn)登錄工程要求按時(shí)實(shí)施最優(yōu)的資源配置和計(jì)劃編制。開發(fā) Web 服務(wù)要求有基本的代碼編寫、XML 解析以及帶有目錄服務(wù)(包括 LDAP 服務(wù))的系統(tǒng)集成方面的知識。很少有工程師具備所有的這些技能。根據(jù)我的經(jīng)驗(yàn),一個中級的工程師設(shè)計(jì)出單點(diǎn)登錄的 Web 服務(wù)要三到五周時(shí)間。代碼交付通常在四周以后,如果要進(jìn)行測試,還需要另加兩周時(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ī)范沒有定義安全和認(rèn)證協(xié)議。但是,很多工程師期望最終的 SOAP 規(guī)范將 SSL 定義為安全地發(fā)出 Web 服務(wù)請求的一種手段。OpenSSL.org 是 SSL 技術(shù)很好的資料來源,并且是免費(fèi)的。

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

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

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

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

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

結(jié)束語

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

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



關(guān)于作者

Frank Cohen 是一位軟件企業(yè)家,他自 1975 年以來就開始為世界范圍內(nèi)取得成功的個人電腦領(lǐng)域做出自己的貢獻(xiàn)。他最初為微型計(jì)算機(jī)編寫操作系統(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)營著 PushToTest,一家提供可伸縮性和性能測試解決方案的公司。更多的信息可以從
www.PushToTest.com 獲得。您可以通過 fcohen@pushtotest.com 與 Frank 聯(lián)系。

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

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

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

咨詢:400-8352-114

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

QQ在線咨詢