專利名稱:利用緩存的登錄對web服務(wù)器上動態(tài)內(nèi)容的隔離匿名訪問的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及利用緩存的登錄對WEB服務(wù)器上動態(tài)內(nèi)容的隔離匿名訪問。具 體地,涉及用于對web服務(wù)器所托管的多個網(wǎng)站上的動態(tài)內(nèi)容進行隔離訪問的系統(tǒng)和方 法。
背景技術(shù):
Web托管組織經(jīng)常處理密集型操作,如在單個服務(wù)器或服務(wù)器集上托管數(shù)千、數(shù)萬 甚至十幾萬或更多的網(wǎng)站客戶。需要密切注意性能和安全問題,以便在維持每個客戶的數(shù) 據(jù)足夠安全的同時,提供對內(nèi)容最廣泛的有效訪問。 當(dāng)僅服務(wù)靜態(tài)內(nèi)容(例如,.html, . jpeg)時,所需要的安全級別和類型與提供動 態(tài)內(nèi)容(例如可執(zhí)行文件,腳本)時所必須采用的安全是十分不同的。除了防止網(wǎng)站訪問 者查看限制訪問的內(nèi)容(例如,受到口令保護的網(wǎng)頁),還需要進一步限制動態(tài)內(nèi)容,從而 使客戶的腳本(或者,在共享的服務(wù)器環(huán)境中處理的其他可執(zhí)行內(nèi)容)不能訪問存儲在相 同環(huán)境中的其他客戶的數(shù)據(jù)。 例如,如果僅僅允許靜態(tài)內(nèi)容,并且所有的訪問者都被授權(quán)查看所有被托管的內(nèi) 容(例如,用戶均未使用登錄方案以過濾訪問),則安全需要是相對統(tǒng)一的和基本的。然而, 當(dāng)在共享web服務(wù)器環(huán)境中允許運行腳本和/或可執(zhí)行圖像時,客戶可以指示web服務(wù)器 自行執(zhí)行的動作的范圍顯著增加。特別地,客戶的腳本可能惡意或者偶然地(例如,通過不 良編程)損壞、損毀或者以其他方式違法地訪問其他客戶的數(shù)據(jù)。 但是,如果出于復(fù)雜的安全考慮而使安全限制太嚴(yán)格,對于內(nèi)容的特定片段的訪 問可能被錯誤地禁止,對于授權(quán)內(nèi)容的訪問可能被延遲,對于服務(wù)器和內(nèi)容的管理可能變 得非常復(fù)雜,等等。結(jié)果是得到無效的web托管解決方案,其沒有充分滿足客戶的需求。
雖然必須強制充分的安全措施以保護每個用戶的數(shù)據(jù)不被其他用戶影響,但是也 應(yīng)當(dāng)維持訪問者自動和匿名登錄網(wǎng)站的能力。這允許訪問者與網(wǎng)站內(nèi)容匿名交互,而沒有 從集中式授權(quán)方首先獲得登錄證書(例如,用戶名和口令、數(shù)字證書)的不便。更特別地, 當(dāng)允許客戶的腳本在后臺代表訪問者運行時,給予訪問者匿名訪問是有益和必要的。
在仍然允許自動和匿名登錄的同時,保護web服務(wù)器安全的已有嘗試是不充分或 無效的,特別是在提供動態(tài)內(nèi)容(例如,腳本)的情況下。例如,在許多恥b托管環(huán)境中,所 有匿名內(nèi)容瀏覽者使用相同的服務(wù)器賬戶自動登錄到網(wǎng)站服務(wù)器中,而不考慮他們正在訪 問的內(nèi)容(例如,靜態(tài)網(wǎng)頁、圖像、腳本、可執(zhí)行文件)。這類解決方法沒有解決試圖限制一 個客戶的腳本訪問另一個客戶的數(shù)據(jù)這一問題。 當(dāng)所有匿名網(wǎng)站訪問者共享一個賬戶時,他們共享一個安全上下文,并且不存在 固有的或簡單的方式將一個訪問者與另一個區(qū)別開。因此,文件服務(wù)器、web服務(wù)器或其他 對已存儲數(shù)據(jù)的訪問仲裁器無法輕易在應(yīng)當(dāng)允許誰以及應(yīng)當(dāng)禁止誰訪問給定的內(nèi)容文件 之間進行區(qū)分。除非所有的訪問者(以及作為頁面瀏覽結(jié)果而運行的所有腳本)具有對所 有內(nèi)容的訪問權(quán),否則個體客戶(或其他涉及到的實體)通常將必需指派(并分配)用戶
5賬戶,以便實現(xiàn)用于訪問受保護內(nèi)容的登錄過程。 更具體地,如果web服務(wù)器上提供可執(zhí)行內(nèi)容(例如,腳本、可執(zhí)行文件),必需魯 棒地配置安全性,以防止對已存儲數(shù)據(jù)進行未授權(quán)訪問,但是不應(yīng)犧牲可接受的性能。部分 安全需求導(dǎo)致需要隔離或隔絕客戶和他們的數(shù)據(jù),使得來自 一個客戶的動態(tài)內(nèi)容不能用于 訪問另一個客戶的受保護數(shù)據(jù)。 例如,一個客戶可能編創(chuàng)試圖刪除web服務(wù)器上所有文件、另一個客戶的目錄結(jié) 構(gòu)下所有文件或引起某些其他故障的腳本。允許客戶內(nèi)容的瀏覽者匿名地和自動地進行連 接這一需要使得對該問題的解決方案復(fù)雜化。 —些中間件或應(yīng)用層軟件試圖提供保護,以阻止軟件的用戶未經(jīng)授權(quán)訪問。例如, PHP(PHP超文本處理器)包括操作的安全模式,其試圖在運行PHP腳本時降低匿名內(nèi)容瀏覽 者或用戶引起破壞的能力。但是,像實際上所有應(yīng)用層軟件一樣,其存在可被利用的漏洞。
對于安全地提供動態(tài)內(nèi)容而不嚴(yán)重影響性能的安全策略這一需求的另一個解決 方法包括虛擬機的使用。在該策略中,為服務(wù)器上的每個客戶構(gòu)建虛擬機或虛擬服務(wù)器。由 于需要建立許多虛擬環(huán)境,該解決方法是處理器密集型的,并且由于資源必需在每個虛擬 機上被許可,該解決方法也是非常昂貴的。另外,必須應(yīng)用某些映射資源來將內(nèi)容瀏覽者映 射到正確的客戶虛擬機上。
Microsoft⑧的ns(因特網(wǎng)信息服務(wù))包括相關(guān)聯(lián)的元數(shù)據(jù)庫,其將靜態(tài)編碼
的URL(統(tǒng)一資源定位器)一對應(yīng)于瀏覽者可以請求的內(nèi)容——映射到每個特定的用戶
賬戶,以便應(yīng)用于每個請求。然而,元數(shù)據(jù)庫在容量上(也即,它能存儲多少映射)是有限
的,并且無法擴展為支持可以服務(wù)于來自數(shù)千或數(shù)十萬網(wǎng)站的內(nèi)容的web服務(wù)器。
如果為了托管大量網(wǎng)站而采用多個web服務(wù)器和元數(shù)據(jù)庫,將進一步增加復(fù)雜 性。由于元數(shù)據(jù)庫的容量存在限制,支持大于一個元數(shù)據(jù)庫容量的多個網(wǎng)站就需要對內(nèi)容 請求進行預(yù)處理。預(yù)處理使得每個請求被引導(dǎo)到正確的服務(wù)器(也即,具有與請求的網(wǎng)站 相對應(yīng)的元數(shù)據(jù)庫的服務(wù)器)。 由于期望服務(wù)提供網(wǎng)站的冗余,因此將在服務(wù)器池之間復(fù)制每個元數(shù)據(jù)庫以便提 供故障轉(zhuǎn)移保護。這可以使得共享元數(shù)據(jù)庫面臨挑戰(zhàn),特別是當(dāng)被托管的網(wǎng)站是動態(tài)的時
候,這意味著它們由于客戶的一時興起發(fā)生改變,可能改變它們的命名標(biāo)準(zhǔn),刪除網(wǎng)站服務(wù)等。 已經(jīng)證明,導(dǎo)致數(shù)據(jù)復(fù)制而沒有足夠的工具管理該數(shù)據(jù)復(fù)制的解決方法是昂貴和 易錯的。在向不同的元數(shù)據(jù)庫組而非單個元數(shù)據(jù)庫提供服務(wù)支持時,會更加昂貴。
支持對web服務(wù)器上內(nèi)容的匿名訪問的另一個問題是反復(fù)地聯(lián)系域控制器(或其 他認證實體)以認證每個虛擬瀏覽者的會話(例如向默認匿名用戶賬戶登錄每個請求)這 一負擔(dān)。該負擔(dān)不僅導(dǎo)致web服務(wù)器性能下降,而且導(dǎo)致接受與web服務(wù)器登錄會話相關(guān) 聯(lián)的SMB(服務(wù)器消息塊)網(wǎng)絡(luò)登錄的文件管理器性能下降。 在web服務(wù)器上緩存匿名登錄會話通常是不可行的,特別是在針對內(nèi)容的瀏覽者 請求在多個進程間分布的情況,這是因為默認地,登錄句柄或者上下文并非僅在其加載的 進程中有效。可以在多個進程間分布請求,以幫助阻止一個客戶的惡意或錯誤的腳本對其 他瀏覽者的運行時體驗產(chǎn)生不良影響。現(xiàn)有的登錄緩存方案不允許進程間通信來準(zhǔn)許登 錄句柄的共享,并且為每個進程建立的獨立緩存策略的開銷將獲得很小的益處或者沒有益
6處。
發(fā)明內(nèi)容
在本發(fā)明的一些實施方式中,提供一種系統(tǒng)和方法,用于對web服務(wù)器所托管的 多個網(wǎng)站上的動態(tài)內(nèi)容的訪問進行隔離,同時緩存登錄句柄或者令牌以便在多個進程間進 行共享。 在這些實施方式中,當(dāng)從網(wǎng)站接收到對動態(tài)內(nèi)容的請求時,首先將其關(guān)聯(lián)到一個 默認匿名用戶賬戶(例如,作為該賬戶來登錄)。UserRetriever過濾模塊接著從獨立于 恥b服務(wù)器并用于其他目的(例如,記賬、網(wǎng)站域信息、服務(wù)提供、識別何處存儲內(nèi)容)的數(shù) 據(jù)庫中獲取與該網(wǎng)站對應(yīng)的用戶名和口令。該數(shù)據(jù)庫充當(dāng)用于web服務(wù)器操作的中央數(shù)據(jù) 源,并且不需要僅在所請求內(nèi)容與可用于該請求的用戶賬戶之間進行映射(例如,利用IIS 實現(xiàn)的元數(shù)據(jù)庫)的專門化數(shù)據(jù)庫。 基于由UserRetriever模塊獲得的用戶名和口令,Userlmpersonator擴展模塊從
登錄緩存管理器請求用于該用戶名的登錄句柄或令牌,并且可以提供用戶名和口令。如果
句柄沒有被緩存,則緩存管理器作為該用戶來登錄,接著復(fù)制并返回所請求的登錄句柄。在
本發(fā)明的這些實施方式中,利用適當(dāng)?shù)臋?quán)限來配置用戶賬戶以訪問所請求的內(nèi)容,而不會
對相同服務(wù)器或文件管理器上的其他網(wǎng)站進行瀏覽、修改或者與其交互。 登錄句柄被附加到請求上,使得該請求將使用模仿的(impersonated)用戶賬戶
而非該請求最初關(guān)聯(lián)的默認匿名用戶賬戶來完成。動態(tài)內(nèi)容被檢索并作為該特定的、受限
的、模仿的用戶賬戶被提供;因此,在該執(zhí)行線程上操作的軟件命令僅可以訪問明確授權(quán)給
該用戶的資源。在該內(nèi)容被獲取或腳本處理完成之后,剝奪所用的登錄句柄,將請求與默認
匿名用戶賬戶重新關(guān)聯(lián),此后終止該請求。 在一些實施方式中,可以實現(xiàn)用戶賬戶的模仿,從而如上所述地限制與該站點相 對應(yīng)的用戶賬戶對網(wǎng)站內(nèi)容的訪問,而無需緩存登錄句柄。
圖1是描述可在其中實現(xiàn)本發(fā)明實施方式的web托管環(huán)境的框圖。 圖2是示出依照本發(fā)明一個實施方式的、用于對web托管環(huán)境中的動態(tài)內(nèi)容的匿
名訪問進行隔離的一個方法流程圖。 圖3是示出依照發(fā)明實施方式的、用于緩存在web托管環(huán)境中的多個并發(fā)進程中 使用的登錄句柄的一個方法流程圖。 圖4描繪了依照一個發(fā)明實施方式的、用于請求已緩存登錄句柄的數(shù)據(jù)結(jié)構(gòu)。
具體實施例方式
給出下述描述以使得任何本領(lǐng)域技術(shù)人員可做出并使用本發(fā)明,并在本發(fā)明的特 定應(yīng)用和它們的要求的上下文中提供下述描述。對公開的實施方式的各種修改對于本領(lǐng)域 的技術(shù)人員是顯而易見的,此處定義的通常的原理可在不偏離本發(fā)明的范圍的情況下應(yīng)用 到其他實施方式中。因此,不試圖將本發(fā)明限制在示出的實施方式,而是與此處公開的原理 和特征相一致的最寬的范圍相符。
在本發(fā)明的一些實施方式中,提供一種系統(tǒng)和方法,用于隔離或隔絕為多個客戶 (每個客戶代表被托管的網(wǎng)站)提供動態(tài)內(nèi)容(例如,腳本,可執(zhí)行文件)的恥b服務(wù)器中 的客戶內(nèi)容,以便在沒有允許的情況下防止每個客戶的動態(tài)內(nèi)容訪問其他客戶的數(shù)據(jù)。
在一個實施方式中,瀏覽者(例如,Internet用戶)匿名連接到web服務(wù)器(并
且最初與默認匿名用戶賬戶相關(guān)聯(lián))。接著,基于其請求的內(nèi)容,瀏覽者(或他們的請求) 被記錄到與擁有所請求內(nèi)容的客戶相關(guān)聯(lián)的用戶賬戶中。該用戶賬戶被授予對于相關(guān)聯(lián)的 客戶內(nèi)容的訪問權(quán),但是阻止對其他客戶內(nèi)容的訪問。由于用戶賬戶與內(nèi)容一樣是由操作 系統(tǒng)定義的,所以可以利用控制資源訪問的操作系統(tǒng)機制(例如,存儲控制列表或稱ACL)。
在發(fā)明的一些實施方式中,提供一種在web服務(wù)器上緩存登錄會話的策略??梢?實現(xiàn)該實施方式,以允許對與客戶網(wǎng)站相關(guān)聯(lián)的用戶賬戶的單獨登錄將在處理針對該網(wǎng)站 內(nèi)容的請求的多個進程之間共享。Web服務(wù)器的性能得以增強,因為不需要為每個以該網(wǎng)站 作為目標(biāo)的請求調(diào)用域控制器或其他授權(quán)代理,并且緩存是由中央進程執(zhí)行的,而非由多 個請求控制進程并行執(zhí)行。 圖1是可在其中實現(xiàn)本發(fā)明某些實施方式的web托管環(huán)境的框圖。文件管理器110 可以包含任何數(shù)量的文件管理器或文件服務(wù)器,其存儲接近十萬客戶網(wǎng)站的內(nèi)容。類似地, 恥b服務(wù)器120協(xié)同操作以便向瀏覽者140提供客戶的內(nèi)容。瀏覽者/用戶可以直接連接 到web服務(wù)器,或經(jīng)由局域網(wǎng)或廣域網(wǎng)(例如互聯(lián)網(wǎng))連接。 文件管理器110和web服務(wù)器120可以共同定位,或是地理上分散的。每個web 服務(wù)器能夠提供來自每個客戶網(wǎng)站的內(nèi)容,無論該內(nèi)容存儲在哪個文件管理器上,或者哪 個網(wǎng)站擁有該內(nèi)容。 數(shù)據(jù)庫150可以由運營web服務(wù)器120的組織來操作,并且存儲可操作和/或可 管理的數(shù)據(jù),例如文件管理器110的地址/位置、客戶內(nèi)容的位置或者路徑、使用哪個用戶 賬戶來訪問每個客戶的內(nèi)容(以及相應(yīng)口令)、記賬記錄、服務(wù)提供信息(例如磁盤空間、帶 寬)、網(wǎng)站域名、登錄和使用統(tǒng)計、市場信息等。這些屬性中的許多沒有存儲在元數(shù)據(jù)庫中。
Web服務(wù)器120包括IIS (因特網(wǎng)信息服務(wù))軟件122或者一些其他網(wǎng)站服務(wù)器軟 件(例如Apache) 。 Web服務(wù)器配置用于服務(wù)于由客戶提供的動態(tài)內(nèi)容,例如腳本和/或可 執(zhí)行文件??梢灾С值氖痉缎阅_本語言包括但是不限于PHP、 ASP(動態(tài)服務(wù)器頁面)、以 及JSP(Java服務(wù)器頁面)。Web服務(wù)器120因此包括支持腳本語言所需的引擎、解釋器或 者解析器,例如PHP引擎122。 Web服務(wù)器120還包括各種ISAPI (因特網(wǎng)服務(wù)系統(tǒng)應(yīng)用程序編程接口 )文件管理 器和擴展,例如UserRetriever?!姥?24 (ISAPI文件管理器),以及Userlmpersonator?!姥?126(ISAPI擴展)。 在本發(fā)明示出的實施方式中,UserRetriever模塊124配置用于在web服務(wù)器120 接收到瀏覽者針對內(nèi)容的請求時訪問數(shù)據(jù)庫150。 UserRetriever模塊獲取將用于該請求 (基于內(nèi)容請求)的用戶名和口令,還可能有其他信息(例如,所請求內(nèi)容的位置或路徑)。
將所獲取信息的一些或全部傳遞到Userlmpersonator 126,其將用戶賬戶的登錄 令牌附加到處理瀏覽者內(nèi)容請求的線程。該請求接著被傳遞到腳本引擎,或者被配置用于 實際上獲取和服務(wù)內(nèi)容并同時模仿UserRetriever 124所識別的用戶賬戶的其他進程。
更具體地,服務(wù)內(nèi)容請求的進程或線程(例如Userlmpersonator126的實例)利
8用先前從數(shù)據(jù)庫150獲取的用戶名和口令來調(diào)用緩存管理器128,而非自己執(zhí)行登錄。緩存管理器在其緩存中搜索用于該用戶賬戶的登錄句柄,復(fù)制該句柄并將其返回給請求者。如果沒有找到,則調(diào)用適當(dāng)?shù)牡卿浄?wù)(例如Windows的LogonUser),緩存其結(jié)果句柄,復(fù)制該結(jié)果句柄并將其提供給請求者。 如上所示,緩存管理器128維護登錄句柄或者令牌的緩存,以便在服務(wù)內(nèi)容請求的進程和/或線程間共享。緩存(在圖1中未示出)可包括散列表、數(shù)據(jù)庫、平面文件(flatfile)或某些其他結(jié)構(gòu)。 在本發(fā)明的一些實施方式中,緩存管理器128可以省略,在這種情況下,用戶賬戶的登錄句柄不能緩存。取而代之,Userlmpersonator 126的每個實例可直接調(diào)用適當(dāng)?shù)牡卿浌ぞ摺?在本發(fā)明的一些其他實施方式中,UserRetriever 124禾P Userlmpersonator 126任意一個或二者可以被省略或被執(zhí)行相同或相似功能的其他實體替代。在其他實施方式中,如圖1中所示的任何組件可以合并或進一步劃分。 圖2是示出根據(jù)本發(fā)明一個實施方式的有助于來自多個客戶網(wǎng)站的動態(tài)內(nèi)容的服務(wù)、而不允許一個客戶的內(nèi)容訪問另 一個客戶的內(nèi)容的方法流程圖。
在操作202,瀏覽者通過他或她的瀏覽器從客戶1的網(wǎng)站(例如z. php)請求動態(tài)內(nèi)容。雖然本發(fā)明所示出的方法是關(guān)于PHP腳本來描述的,但是本領(lǐng)域普通技術(shù)人員將理解,在不超出本發(fā)明范圍的情況下,如何對本方法修改至與其他類型的動態(tài)內(nèi)容(例如ASP腳本、JSP腳本、可執(zhí)行圖像) 一起工作。 在操作204,瀏覽者的請求被傳遞到web服務(wù)器。在本發(fā)明的這個實施方式的示范性實現(xiàn)中,組織可以操作多個web服務(wù)器(例如,5個、10個)的集群、場(farm)或其他協(xié)作集合,每個恥b服務(wù)器可以為組織的每個客戶(組織的客戶可能超過一萬個)提供內(nèi)容。負載均衡器、路由器或其他實體可用于在服務(wù)器間分發(fā)請求。 瀏覽者請求可以分布在任何數(shù)量的線程和/或進程間。例如,每個請求將被指派給線程池中的不同線程,并且給定的進程可以處理任意數(shù)量的線程。然而,在一個實施方式中,可使用輪詢(或其他調(diào)度方案)將瀏覽者內(nèi)容請求分布在多個進程(例如100個)之間。限制進程的數(shù)量,以便最小化資源競爭,并提高進程的隔離,這提高了穩(wěn)定性和安全性。這有助于確保每個瀏覽者的體驗盡可能與其他瀏覽者的體驗相隔離。 在操作206, web服務(wù)器上的監(jiān)聽器聽到請求,并附加用于默認匿名用戶的安全上下文。在本發(fā)明的不同實施方式中,可以執(zhí)行不同的web服務(wù)器軟件,例如IIS、 Apache、Lighttpd、 nginx等。而且,在操作206, web服務(wù)器調(diào)用UserRetriever 124(圖1的)或其他定制ISAPI文件管理器或類似實體。 在操作208, UserRetriever過濾器在未與web服務(wù)器緊密聯(lián)系的數(shù)據(jù)庫中執(zhí)行查
找。因此,如果web服務(wù)器是IIS,查找不在相關(guān)聯(lián)的元數(shù)據(jù)庫中執(zhí)行。 更具體地,除了標(biāo)識用戶賬戶以便隔離對不同網(wǎng)站的動態(tài)內(nèi)容的匿名訪問之外,
數(shù)據(jù)庫還被web服務(wù)器的操作者用于其他目的。例如,數(shù)據(jù)庫可用于為客戶網(wǎng)站計費、追蹤
通信模式等。只要web服務(wù)環(huán)境的配置改變(例如,網(wǎng)站改變其名字、增加或刪除網(wǎng)站)便
更新數(shù)據(jù)庫,這引起數(shù)據(jù)庫總是反映當(dāng)前配置。 如果不使用這種分離的數(shù)據(jù)庫來標(biāo)識應(yīng)用于請求動態(tài)內(nèi)容的用戶賬戶,而是使用與恥b服務(wù)器相關(guān)聯(lián)或聯(lián)系的數(shù)據(jù)庫來確定哪個用戶賬戶應(yīng)用于內(nèi)容請求(例如,伴隨IIS
的元數(shù)據(jù)庫),則將會發(fā)生不必需的復(fù)制。如上所述,這將使得管理恥b服務(wù)器的配置和操
作的進程顯著地復(fù)雜化(例如,必需維持同步),并且還會引起擴展性的問題。 數(shù)據(jù)庫中的查找是基于所請求的內(nèi)容項目(例如,所請求的精確URL,與所請求
URL相匹配的模式),并返回用戶名和口令,該用戶名和口令將用來為請求的線程指派不同
的安全上下文,即與客戶l相關(guān)聯(lián)的上下文。該查找還返回所請求內(nèi)容的位置(例如路徑、
網(wǎng)絡(luò)地址)。 在本發(fā)明的該實施方式中,對文件管理器、文件服務(wù)器或者包含客戶內(nèi)容的其他存儲設(shè)備的訪問由訪問控制列表或操作系統(tǒng)強制的其他方式進行控制。每個客戶與用戶賬戶相關(guān)聯(lián)(在數(shù)據(jù)庫中),該用戶賬戶擁有訪問該客戶的內(nèi)容的正常安全許可,而沒有訪問其他客戶的內(nèi)容的許可。 在查找完成之后,將線程的控制返回給web服務(wù)器。Web服務(wù)器調(diào)用與PHP腳本相關(guān)聯(lián)的定制ISAPI擴展,在該實例中是圖1中的Userlmpersonator 126??梢詾椴煌愋偷膭討B(tài)內(nèi)容配置不同的定制ISAPI擴展,或者可由一個定制擴展來處理多個類型。Userlmpersonator的多個實例可以在獨立的進程中并行執(zhí)行。 在操作210, Userlmpersonator使用所獲取的口令將用于在操作208的查找中獲得的用戶名(例如CustomerUserl)的登錄令牌附加至請求線程,并設(shè)置線程的上下文以匹配該用戶賬戶。 在本發(fā)明的不同實施方式中,Userlmpersonator可以通過不同的方式獲得登錄令牌或句柄。例如,圖3描述了緩存管理器(例如,圖1中的緩存管理器128)緩存登錄句柄以便在多個進程間共享的方法。在本發(fā)明的其他實施方式中,Userlmpersonator可通過調(diào)用合適的登錄實體或服務(wù)(例如Windows的LogonUser)直接獲得登錄句柄。
在操作212,調(diào)用引擎、解釋器、解析器或能夠執(zhí)行所請求內(nèi)容的其他模塊,例如PHP引擎。PHP引擎獲取所請求的內(nèi)容(例如,使用由UserRetriever標(biāo)識的路徑),并分析和執(zhí)行該內(nèi)容。由于腳本是在所請求內(nèi)容的所有者所關(guān)聯(lián)的安全上下文中執(zhí)行的,所以內(nèi)容可正確地運行,而不會有機會影響其他客戶的數(shù)據(jù)。接著,將線程的控制返回給Userlmpersonator模塊。 在操作214,剝奪模仿的安全上下文和登錄令牌,重新附加默認的匿名用戶的上下文,該方法結(jié)束。 圖3是示出了根據(jù)本發(fā)明實施方式的在web服務(wù)器上緩存登錄句柄以供多個進程用來服務(wù)內(nèi)容的的方法流程圖。 在操作302,在web服務(wù)器處接收針對該web服務(wù)器所托管的網(wǎng)站之一的內(nèi)容的請求。web服務(wù)器可以僅僅是協(xié)同工作以提升冗余和性能的多個服務(wù)器之一,但是每個服務(wù)器被配置用于為每個網(wǎng)站提供內(nèi)容。換句話說,內(nèi)容請求不需要被路由到配置用于僅僅服務(wù)于所有網(wǎng)站的部分內(nèi)容的特定web服務(wù)器(或服務(wù)器的子集)。 在操作304,標(biāo)識具有應(yīng)用于該請求的安全上下文的用戶賬戶。在一個實施方式中,可如上文結(jié)合圖2所述的那樣來標(biāo)識賬戶(例如,通過參考與web服務(wù)器分離的數(shù)據(jù)庫)。 特別地,當(dāng)在web服務(wù)器處接收到請求時,可將默認的匿名用戶賬戶和安全上下文應(yīng)用于該請求,此后,可以調(diào)用定制軟件模塊以從與web服務(wù)器分離的數(shù)據(jù)庫中獲取目
標(biāo)用戶的賬戶名和口令??蔀槊總€被服務(wù)器托管的網(wǎng)站指定不同的用戶賬戶。 在操作306,配置用于促進內(nèi)容請求處理的web服務(wù)器進程調(diào)用登錄緩存管理器,
登錄緩存管理器是在該服務(wù)器上執(zhí)行的另一個進程。登錄緩存管理器配置用于管理用于數(shù)
據(jù)庫中標(biāo)識的各用戶賬戶的登錄句柄的緩存。調(diào)用進程標(biāo)識自身(例如,通過進程id),并
為其需要的登錄句柄提供用戶賬戶和口令。 在操作308,緩存管理器在其緩存中搜索與特定用戶賬戶相匹配的登錄句柄。如果其找到匹配,該方法進行到操作314 ;否則繼續(xù)操作310。 在操作310,緩存管理器使用特定的用戶名和口令來調(diào)用操作系統(tǒng)的登錄工具或者服務(wù)。 在操作312,緩存管理器接收用于用戶賬戶的登錄句柄,并將其存儲在緩存中。登錄句柄在需要時可轉(zhuǎn)變?yōu)槔缯麛?shù)值。 在操作314,針對調(diào)用進程提供的進程id,緩存管理器使用由操作系統(tǒng)提供的工
具或服務(wù)(例如,Windows的DuplicateHandle)為指定的用戶賬戶復(fù)制登錄句柄。 在操作316,緩存管理器將登錄句柄傳送給調(diào)用進程。在一個實現(xiàn)中,緩存管理器
和調(diào)用進程通過指定的管道通信,當(dāng)然,在其他實現(xiàn)中,可以使用進程間通信的其他方法。 在操作318,調(diào)用進程將復(fù)制的登錄句柄或令牌附加到與內(nèi)容請求相關(guān)聯(lián)的線程
上。進程接著繼續(xù)分解該請求,或者在需要時將其傳遞到另一個實體(例如,如果內(nèi)容包括
腳本,則該實體是配置用于獲取并執(zhí)行內(nèi)容的腳本引擎)。 在本發(fā)明的一些實施方式中,在請求被終止之前,從該請求剝奪目標(biāo)用戶賬戶的安全上下文和登錄句柄。 圖4描繪了根據(jù)本發(fā)明一個實施方式的用于將針對登錄句柄的請求傳遞到登錄緩存管理器的數(shù)據(jù)結(jié)構(gòu)。在該實施方式中,登錄句柄請求結(jié)構(gòu)410包括版本412、大小字段414、416、418、進程id 424、目標(biāo)用戶名426和目標(biāo)口令428。 進程id 424標(biāo)識已經(jīng)向登錄緩存管理器提交了登錄句柄請求的進程,目標(biāo)用戶名426標(biāo)識已經(jīng)為其請求了登錄句柄的用戶賬戶,目標(biāo)口令是用戶賬戶的口令,登錄緩存管理器可能需要該目標(biāo)口令來登錄該賬戶(如果用于賬戶的登錄句柄當(dāng)前沒有被緩存)。大小字段414、416和418分別識別數(shù)據(jù)字段424、426和428的大小。 本領(lǐng)域技術(shù)人員可以理解,在不超出當(dāng)前發(fā)明范圍的情況下,可開發(fā)具有其他形式的數(shù)據(jù)結(jié)構(gòu)以促進登錄句柄的緩存和共享。 本發(fā)明的當(dāng)前實施方式所示范性地執(zhí)行的程序環(huán)境,結(jié)合了通常意義上的計算機或者特定意義的設(shè)備例如手持計算機。為了清楚起見,可省略這些設(shè)備(例如處理器、存儲器、數(shù)據(jù)存儲設(shè)備、顯示器)的詳細說明。 還可以理解,可使用各種技術(shù)實現(xiàn)本發(fā)明的技術(shù)。例如,可在計算機系統(tǒng)上執(zhí)行的軟件中,或在硬件中,或者在它們的各種結(jié)合中實現(xiàn)此處描述的方法,其中該硬件可使用微處理器或其他特殊設(shè)計的特定應(yīng)用集成電路、可編程邏輯設(shè)備的結(jié)合。 特別地,可使用數(shù)據(jù)結(jié)構(gòu)和駐留在合適的計算機可讀介質(zhì)上的程序代碼實現(xiàn)此處描述的方法,其可為存儲數(shù)據(jù)和/或計算機系統(tǒng)使用的代碼的任何設(shè)備或介質(zhì)。這包括,但不限于,易失性存儲器、非易失性存儲器、磁的和光存儲設(shè)備例如磁盤驅(qū)動器、磁帶、CD(光盤)、DVD(數(shù)字化通用光盤或數(shù)字化視頻光盤)、已知的或之后開發(fā)的可以存儲計算機可讀 介質(zhì)的其他介質(zhì)。 僅僅為了示出和描述的目的,介紹了本發(fā)明的前述實施方式。它們不是無遺漏的 或試圖將本發(fā)明限制于所公開的形式。因此,由所附權(quán)利要求而非前述公開的來定義本發(fā) 明的范圍。
1權(quán)利要求
一種模仿與網(wǎng)站相關(guān)聯(lián)的用戶賬戶以服務(wù)來自所述網(wǎng)站的內(nèi)容的自動方法,所述方法包括在web服務(wù)器處接收針對第一網(wǎng)站的內(nèi)容的請求;將所述請求與所述web服務(wù)器上的默認匿名用戶賬戶相關(guān)聯(lián);在與所述web服務(wù)器分離的數(shù)據(jù)庫中,標(biāo)識與所述第一網(wǎng)站相對應(yīng)的第一用戶賬戶,其中所述第一用戶賬戶配置有訪問所述第一網(wǎng)站的內(nèi)容的許可,但是沒有訪問第二網(wǎng)站的內(nèi)容的許可;搜索用于所述第一用戶賬戶的已緩存的登錄句柄;將所述請求與所述第一用戶賬戶而非所述默認匿名用戶賬戶相關(guān)聯(lián);服務(wù)所請求的內(nèi)容;以及將所述請求與所述默認匿名用戶賬戶而非所述第一用戶賬戶重新關(guān)聯(lián)。
2. 如權(quán)利要求1的方法,其中 所請求的內(nèi)容包括動態(tài)內(nèi)容;以及所述服務(wù)包括調(diào)用被配置用于執(zhí)行所述動態(tài)內(nèi)容的實體。
3 如權(quán)利要求1的方法,其中所述將所述請求與默認匿名用戶賬戶相關(guān)聯(lián)包括將用 于如下用戶賬戶的登錄句柄附加至所述請求,其中,基本上針對內(nèi)容的所有匿名請求都在 該用戶賬戶下登錄。
4. 如權(quán)利要求l的方法,其中所述數(shù)據(jù)庫包括用于管理所述web服務(wù)器的操作的信息, 以及用于將給定網(wǎng)站內(nèi)容映射到用于訪問所述給定網(wǎng)站內(nèi)容的給定用戶賬戶的信息。
5. 如權(quán)利要求4的方法,其中所述信息包括去往所請求內(nèi)容的路徑。
6. 如權(quán)利要求4的方法,其中所述信息包括以下一個或多個 記賬數(shù)據(jù);服務(wù)提供信息;網(wǎng)站的屬性;以及網(wǎng)站的使用統(tǒng)計。
7. 如權(quán)利要求1的方法,其中數(shù)據(jù)庫不是利用因特網(wǎng)信息服務(wù)軟件來實現(xiàn)的元數(shù)據(jù)庫。
8. 如權(quán)利要求1的方法,其中搜索已緩存的登錄句柄包括調(diào)用登錄緩存管理器,其配置用于緩存登錄句柄,以便在所述恥b服務(wù)器上執(zhí)行的多 個過程間共享,從而服務(wù)內(nèi)容;以及 在所述登錄緩存管理器處在緩存中搜索用于所述第一用戶賬戶的登錄句柄; 如果對所述緩存的所述搜索失敗,則作為所述第一用戶賬戶登錄; 復(fù)制用于所述第一用戶賬戶的所述登錄句柄;以及 返回復(fù)制的登錄句柄;
9. 如權(quán)利要求1的方法,其中所述將請求與第一用戶賬戶相關(guān)聯(lián)包括將登錄句柄附著 在與該請求相關(guān)聯(lián)的執(zhí)行的線程上。
10. 如權(quán)利要求1的方法,其中所述搜索被緩存的登錄句柄包括向登錄緩存管理器傳輸用于第一用戶賬戶的登錄句柄請求;以及上述對登錄句柄的請求包括第一用戶賬戶的名字、用于第一用戶賬戶的口令和為登錄 句柄發(fā)出所述請求的進程的標(biāo)識符。
11. 如權(quán)利要求1的方法,其中將所述請求與所述默認匿名用戶賬戶重新關(guān)聯(lián)包括從 所述請求剝奪用于所述第一用戶賬戶的所述登錄句柄。
12. —種存儲有指令的計算機可讀介質(zhì),當(dāng)由計算機執(zhí)行時,使得計算機執(zhí)行模仿與網(wǎng) 站相關(guān)聯(lián)的用戶賬戶以服務(wù)來自所述網(wǎng)站的內(nèi)容的方法,所述方法包括在恥b服務(wù)器處接收針對第一網(wǎng)站的內(nèi)容的請求; 將所述請求與所述web服務(wù)器上的默認匿名用戶賬戶相關(guān)聯(lián);在與所述web服務(wù)器分離的數(shù)據(jù)庫中,標(biāo)識與所述第一網(wǎng)站相對應(yīng)的第一用戶賬戶, 其中所述第一用戶賬戶配置有訪問所述第一網(wǎng)站的內(nèi)容的許可,但是沒有訪問第二網(wǎng)站的 內(nèi)容的許可;搜索用于所述第一用戶賬戶的已緩存的登錄句柄;將所述請求與所述第一用戶賬戶而非所述默認匿名用戶賬戶相關(guān)聯(lián);服務(wù)所請求的內(nèi)容;以及將所述請求與所述默認匿名用戶賬戶而非所述第一用戶賬戶重新關(guān)聯(lián)。
13. —種計算機服務(wù)器,配置用于服務(wù)來自多個網(wǎng)站的動態(tài)內(nèi)容,所述服務(wù)器包括 web服務(wù)器軟件,其配置用于接收針對來自第一網(wǎng)站的動態(tài)內(nèi)容的請求,并將默認匿名用戶賬戶與所述請求相關(guān)聯(lián);web服務(wù)器過濾器,其配置用于在與所述web服務(wù)器分離的數(shù)據(jù)庫中標(biāo)識用于訪問來 自所述第一網(wǎng)站的內(nèi)容的定制用戶賬戶;web服務(wù)器擴展,其配置用于從緩存管理器請求用于所述定制用戶賬戶的登錄句柄; 將所述登錄句柄附加至針對所述動態(tài)內(nèi)容的所述請求;以及 在所請求的所述動態(tài)內(nèi)容被執(zhí)行之后,從所述請求中移除所述登錄句柄。
14. 如權(quán)利要求13的服務(wù)器,其中所述緩存管理器進一步配置用于 接收針對所述登錄句柄的請求; 在緩存中搜索所述登錄句柄;如果對所述緩存的所述搜索未成功,則作為所述定制用戶賬戶登錄; 復(fù)制所述登錄句柄;以及將復(fù)制的登錄句柄返回給所述web服務(wù)器擴展。
15. 如權(quán)利要求14的服務(wù)器,其中針對所述登錄句柄的所述請求包括 所述定制用戶賬戶的名字;所述定制用戶賬戶的口令;以及 所述web服務(wù)器擴展的進程標(biāo)識符。
16. 如權(quán)利要求13的服務(wù)器,其中所述緩存管理器緩存所述登錄句柄,以供所述web服 務(wù)器上執(zhí)行的所述恥b服務(wù)器擴展的多個實例使用。
17. 如權(quán)利要求13的服務(wù)器,進一步包括與所述數(shù)據(jù)庫的連接,其中所述數(shù)據(jù)庫不是 被配置用于利用因特網(wǎng)信息服務(wù)軟件進行操作的元數(shù)據(jù)庫。
18.如權(quán)利要求13的服務(wù)器,其中所述數(shù)據(jù)庫包括用于促進所述web服務(wù)器管理的信 息,以及用于將所請求的動態(tài)內(nèi)容映射到所述定制用戶賬戶的信息。
全文摘要
本發(fā)明涉及利用緩存的登錄對WEB服務(wù)器上動態(tài)內(nèi)容的隔離匿名訪問。具體地,提供了用于對web服務(wù)器所托管的多個網(wǎng)站上的動態(tài)內(nèi)容進行隔離訪問的系統(tǒng)和方法。當(dāng)從網(wǎng)站接收針對動態(tài)內(nèi)容的請求時,UserRetriever模塊從與web服務(wù)器分離、并用于其他目的(例如記賬)的數(shù)據(jù)庫中標(biāo)識去往該內(nèi)容的路徑,并獲取與網(wǎng)站相對應(yīng)的用戶名和口令。UserImpersonator模塊從登錄緩存管理器中請求用于該用戶名的登錄句柄。使用該登錄句柄將請求與模仿的用戶賬戶而非請求最初所關(guān)聯(lián)的默認匿名用戶賬戶相關(guān)聯(lián)。在受限模仿用戶賬戶會話的上下文中獲取和服務(wù)動態(tài)內(nèi)容,此后,剝奪所應(yīng)用的登錄句柄,并且將請求與默認匿名用戶賬戶重新關(guān)聯(lián)。
文檔編號H04L29/08GK101729597SQ200910221478
公開日2010年6月9日 申請日期2009年9月29日 優(yōu)先權(quán)日2008年10月17日
發(fā)明者B·C·??怂?申請人:因特偉特公司