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

將Web服務用于電子交易的單點登錄

申請免費試用、咨詢電話:400-8352-114

AMTeam.org

將Web服務用于電子交易的單點登錄 

--分布式計算機的SOAP認證


Frank Cohen(fcohen@pushtotest.com

總裁,PushToTest

2002 年 1 月

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

機場究竟什么時候真正完工?

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

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

減少在線消費者市場的開支

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

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

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

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


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


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

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

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

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

登錄服務實時地進行操作。一旦用戶單擊了登錄按鈕,應在 5 秒內(nèi)作出響應。

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

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

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

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

兩部分解決方案

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

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


腳本生成的頁面包含一個用來登錄的 HTML 表單。該表單提交到電子交易應用服務器上的 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;

電子交易應用服務器上的 KeyMaster servlet 驗證用戶帳戶,并且以指向 eCRM 服務器上的 GateKeeper servlet 的重定向命令響應表單請求。這個重定向命令看起來像這樣:

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

sq 參數(shù)包含用戶數(shù)據(jù)。在基于 SOAP 的 Web 服務環(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 應用中,并且將用戶的瀏覽器重定向到返回頁面。雖然在這次事務中有重定向的頁面,但是用戶只看到帶有登錄表單的原始頁面以及用戶登錄后的返回頁面。這樣,用戶會感到很愉快。

異步協(xié)議

為了達到電子交易和 eCRM 服務器之間雙向交互的目標,GateKeeper 實施了異步協(xié)議。當新用戶向電子交易站點注冊時,Switchouse 使用異步 Web 服務。

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

新用戶將注冊信息 — 姓名、地址等輸入到 HTML 表單。該表單提交到電子交易服務器,從而將新用戶數(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 服務器數(shù)據(jù)庫,登錄該用戶,并將用戶重定向到返回頁面。所有過程在用戶看來都是實時的。

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

<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)有用戶、刪除用戶以及報告錯誤都由同一系統(tǒ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 服務,系統(tǒng)實現(xiàn)了單點登錄的目的。新用戶即時訪問了電子交易站點。該異步系統(tǒng)所測出的延遲通常少于五秒。用戶感到很愉快。

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

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

單向的防火墻

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

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

圖 3. 單向的防火墻


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

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

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

先計劃集成

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

可靠的安全

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

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

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

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

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

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

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

結束語

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

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



關于作者

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

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

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

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

咨詢:400-8352-114

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

QQ在線咨詢