專利名稱:非受管網(wǎng)絡(luò)中公共身份的帳戶同步的制作方法
非受管網(wǎng)絡(luò)中公共身份的帳戶同步
站旦 冃豕
隨著計算機網(wǎng)絡(luò)技術(shù)的進步,大型計算機網(wǎng)絡(luò)已經(jīng)變得相當(dāng)復(fù)雜,并具有精 密復(fù)雜的管理方案用于管理網(wǎng)絡(luò)的用戶訪問與安全性。例如,大型計算機網(wǎng)絡(luò)一般 具有多個域,每個域具有一個主域控制器,它包含用于該域中的機器的用戶名、口 令和許可的數(shù)據(jù)庫。
相反,小規(guī)模的本地網(wǎng)絡(luò),如家庭網(wǎng)絡(luò)和小型企業(yè)網(wǎng)絡(luò),仍保持得相當(dāng)簡單 且不是精密復(fù)雜的。大多數(shù)小規(guī)模網(wǎng)絡(luò)是非受管的,因為沒有專用的實體,如大型 網(wǎng)絡(luò)中的域控制器,來以集中的方式處理帳戶信息。在這種非受管網(wǎng)絡(luò)中的機器一 般連接到同一網(wǎng)絡(luò)集線器并且作為松散的對等組(有時稱為"工作組")來操作, 其目的僅是幫助用戶找到工作組內(nèi)諸如打印機和共享文件夾之類。否則,機器就如 獨立的機器那樣運行。因此,非受管網(wǎng)絡(luò)為用戶提供很少的附加值。
沒有有效的安全性管理,并且機器沒有被良好地集成以便于網(wǎng)絡(luò)訪問和資源 共享。本地帳戶必須在每個機器上手動創(chuàng)建,并且在工作組中的不同機器上的帳戶 之間沒有關(guān)系。因而,用戶能登錄到一個機器上但不能登錄到同一網(wǎng)絡(luò)中的另一機 器上,因為用戶的帳戶還未在該另一機器上建立。沒有可靠的機制來枚舉網(wǎng)絡(luò)中的 計算機。而且,機器上的資源共享是難以實現(xiàn)和維護的,并且難以管理以提供安全 性。
概述
網(wǎng)絡(luò)化計算機系統(tǒng)常常支持用戶從一個計算機遷移到另一計算機上。鑒于上 述原因,本發(fā)明提供一種用于在沒有服務(wù)器的情況下在非受管安全工作組中組織計 算機網(wǎng)絡(luò)上的多個計算機的平臺。非受管安全工作組在組中的計算機之間提供公共 用戶訪問和安全資源共享。按照本發(fā)明的一個方面,如果用戶帳戶信息在非受管安 全工作組的計算機之一上被修改或添加,則用戶帳戶在非受管安全工作組的每個計 算機上被同步。用戶帳戶可被復(fù)制或修改以同步非受管安全工作組中的帳戶信息。
根據(jù)本發(fā)明的另一方面,計算機將帳戶信息的改變通告給非受管安全工作組
5中的其它計算機。如果非受管安全工作組中的計算機之一確定該變化沒有在當(dāng)前帳戶信息中反映,則該計算機可向發(fā)出通告的計算機請求經(jīng)更新的帳戶信息。
根據(jù)本發(fā)明的另一方面,本發(fā)明在同步非受管安全工作組中的經(jīng)更新的用戶帳戶之前,確定在用戶帳戶中是否存在沖突。當(dāng)沖突被解決時,在非受管安全工作組的各計算機上復(fù)制被改變的用戶帳戶。
根據(jù)本發(fā)明的另一方面, 一應(yīng)用程序接口 (API)允許應(yīng)用程序査詢網(wǎng)絡(luò)化計算機系統(tǒng)和非受管安全工作組的屬性。在本發(fā)明的一說明性實施例中,一 API提供計算機網(wǎng)絡(luò)中的非受管安全工作組的列表,提供有關(guān)指定的非受管安全工作組的信息,提供有關(guān)非受管安全工作組內(nèi)的指定計算機的信息,創(chuàng)建新的非受管安全工作組,以及允許計算機加入或離開非受管安全工作組。
根據(jù)本發(fā)明的另一方面,作出請求的計算機通過與非受管安全工作組中的一成員計算機建立信任來加入該非受管安全工作組。該成員計算機認(rèn)證作出請求的計算機。作出請求的計算機用自簽名的證書在該成員計算機上建立帳戶。作出請求的計算機隨后存儲有關(guān)該非受管安全工作組的信息并將其自己作為該非受管安全工作組的成員來發(fā)布。
提供本概述來以簡化形式介紹將在下面的詳細(xì)描述中進一步描述的一些概念。本概述并不是要標(biāo)識出所要求保護的主題的關(guān)鍵特征或必要特征,也不是要用于幫助確定所要求保護的主題的范圍。
附圖簡述
本發(fā)明的以上述概述以及隨后本發(fā)明的示例性實施例的詳細(xì)描述在結(jié)合附圖閱讀時將更好地理解,這些附圖包括在此是為了示例而非限制本發(fā)明。
圖1是概括地示出根據(jù)本發(fā)明的一個說明性實施例可在小規(guī)模非受管安全工作組中使用的示例性計算機系統(tǒng)的框圖。
圖2是示出根據(jù)本發(fā)明的一個說明性實施例可在其上將少量計算機形成非受管安全工作組的本地計算機網(wǎng)絡(luò)的示意圖。
圖3是示出根據(jù)本發(fā)明的一個說明性實施例在非受管安全工作組中的兩個計算機之間建立信任和復(fù)制用戶帳戶與用戶概況的示意圖。
圖4是示出根據(jù)本發(fā)明的一個說明性實施例用于計算機加入非受管安全工作
組的過程的流程圖。
圖5是示出根據(jù)本發(fā)明的一個說明性實施例的提供加入或創(chuàng)建非受管安全工作組的選項的示例性用戶界面窗口的示意圖。
圖6示出了了根據(jù)本發(fā)明的一個說明性實施例的用于使一計算機加入非受管安全工作組的場景。
圖7示出了根據(jù)本發(fā)明的一個說明性實施例用于在非受管安全工作組中從一
計算機向另一計算機提供經(jīng)更新的帳戶信息的流程圖。
圖8示出了根據(jù)本發(fā)明的一個說明性實施例用于在非受管安全工作組中從一
計算機獲得經(jīng)更新的帳戶信息的流程圖。
圖9示出根據(jù)本發(fā)明的一個說明性實施例用于在非受管安全工作組中支持應(yīng)
用程序編程接口 (API)的體系結(jié)構(gòu)。
圖10A-B示出根據(jù)本發(fā)明的一個說明性實施例的一般編程接口。
圖11A-B示出根據(jù)本發(fā)明的一個說明性實施例的分解編程接口。
圖12A-B示出根據(jù)本發(fā)明的一個說明性實施例的重定義編程接口。
圖13A-B示出根據(jù)本發(fā)明的一個說明性實施例的具有合并的功能的編程接□。
圖14A-B示出根據(jù)本發(fā)明的一個說明性實施例的具有脫離的功能的編程接Q。
圖15A-B示出根據(jù)本發(fā)明的一個說明性實施例的通過動態(tài)重寫代碼以取代接口功能的編程接口。
詳細(xì)描述
轉(zhuǎn)到附圖,其中相同的參考標(biāo)號指代相同的元素,本發(fā)明被示為在一合適的計算環(huán)境中實現(xiàn)。盡管不作要求,但本發(fā)明將在諸如程序模塊等由個人計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述。通常,程序模塊包括執(zhí)行特定的任務(wù)或
實現(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。而且,本領(lǐng)域的技術(shù)人員將意識到,本發(fā)明可用其它計算機系統(tǒng)配置來實施,這些配置包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機、大型計算機等。本發(fā)明可在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計算環(huán)境中實施。在分布式計算環(huán)境中,程序模塊可位于本地或遠(yuǎn)程存儲器存儲設(shè)備兩者中。
包括對下列術(shù)語的定義以便于對詳細(xì)說明的理解。
域一由域控制器(例如服務(wù)器)集中管理的網(wǎng)絡(luò)化計算機組。域控制器管理對該域的用戶訪問和安全性。域控制器一般包含該域中的計算機(機 器)的用戶名、口令和許可的數(shù)據(jù)庫。
非受管安全工作組一網(wǎng)絡(luò)化計算機的對等組,其中在沒有服務(wù)器的情況 下提供用戶訪問與安全性。通常,在對等組內(nèi)的每個計算機(機器)上 維護一個帳戶數(shù)據(jù)結(jié)構(gòu)。非受管安全工作組在概念上可被視為駐留在本 地網(wǎng)絡(luò)中的計算機的安全組,其中這些計算機一起工作以保護它們免遭 外部用戶和機器的可能侵入,同時安全組中的用戶被給予高度自由和在 訪問該組的機器和資源方面的協(xié)作。
下面描述根據(jù)本發(fā)明的一個說明性方面的可在小規(guī)模非受管安全工作組中使 用的通用計算設(shè)備?,F(xiàn)在轉(zhuǎn)到圖1,通用計算設(shè)備以常規(guī)個人計算機20的形式示
出,包括處理單元21、系統(tǒng)存儲器22以及將各種系統(tǒng)組件(包括系統(tǒng)存儲器)耦 合到處理單元21的系統(tǒng)總線23。系統(tǒng)總線23可以是若干類型的總線結(jié)構(gòu)中的任 一種,包括存儲器總線或存儲器控制器,外設(shè)總線以及使用各種總線體系結(jié)構(gòu)中的 任一種的局部總線。系統(tǒng)存儲器包括只讀存儲器(ROM) 24和隨機存取存儲器 (RAM) 25?;据斎?輸出系統(tǒng)(BIOS) 26包含幫助在個人計算機的元件之間 傳送信息(如在啟動時)的基本例程,它被存儲在ROM24中。個人計算機20還 包括讀寫硬盤60的硬盤驅(qū)動器27、讀寫可移動磁盤29的磁盤驅(qū)動器28、以及讀 寫如CD ROM或其它光介質(zhì)等可移動光盤31的光盤驅(qū)動器30。
硬盤驅(qū)動器27、磁盤驅(qū)動器28和光盤驅(qū)動器30分別通過硬盤驅(qū)動器接口 32, 磁盤驅(qū)動器接口 33和光盤驅(qū)動器接口 34連接到系統(tǒng)總線23。驅(qū)動器及其相關(guān)聯(lián) 的計算機可讀介質(zhì)為個人計算機20提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊 和其它數(shù)據(jù)的非易失性存儲。盡管在此所示的示例性環(huán)境利用硬盤60、可移動磁 盤29和可移動光盤31,但本領(lǐng)域的技術(shù)人員將意識到,該示例性操作環(huán)境中也可 使用可存儲計算機可訪問的數(shù)據(jù)的其它類型的計算機可讀介質(zhì),如磁帶盒、閃存卡、 數(shù)字視頻盤、伯努利(Bernoulli)盒式磁帶、隨機存取存儲器、只讀存儲器、存儲 區(qū)域網(wǎng)等。
多個程序模塊可存儲在硬盤60、磁盤29、光盤31、 ROM24或RAM25中, 包括操作系統(tǒng)35、 一個或多個應(yīng)用程序36、其它程序模塊37和程序數(shù)據(jù)38。用 戶可通過如鍵盤40和定點設(shè)備42等輸入設(shè)備將命令與信息輸入到個人計算機20 中。其它輸入設(shè)備(未示出)可包括話筒、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃 描儀等。這些和其它輸入設(shè)備常常通過耦合到系統(tǒng)總線的串行端口接口 46連接到
8處理單元21,但可通過如并行端口、游戲端口或通用串行總線(USB)或網(wǎng)絡(luò)接 口卡等其它接口來連接。監(jiān)示器47或其它類型的顯示設(shè)備也經(jīng)由如視頻適配器48 等接口連接到系統(tǒng)總線23。除了監(jiān)示器之外,個人計算機一般包括未示出的其它 外圍輸出設(shè)備,如揚聲器和打印機。
個人計算機20可使用到一個或多個遠(yuǎn)程計算機,如遠(yuǎn)程計算機49的邏輯連 接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計算機49可以是另一個人計算機、服務(wù)器、路由器、 網(wǎng)絡(luò)PC、對等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點,并且一般包括許多或全部相對于個人 計算機20描述的元件,盡管在圖1中僅示出存儲器存儲設(shè)備50。圖1所示的邏輯 連接包括局域網(wǎng)(LAN) 51和廣域網(wǎng)(WAN) 52。這類網(wǎng)絡(luò)化環(huán)境在辦公室、企 業(yè)級計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)是很常見的。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時,個人計算機20通過網(wǎng)絡(luò)接口或適配器53連接 到本地網(wǎng)絡(luò)51。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時,個人計算機20—般包括調(diào)制解調(diào) 器54或用于通過WAN 52建立通信的其它裝置。調(diào)制解調(diào)器54可以內(nèi)置或外置 的,它經(jīng)由串行端口接口46連接到系統(tǒng)總線23。在網(wǎng)絡(luò)化環(huán)境中,相對于個人計 算機20描述的程序模塊或其部分可存儲在遠(yuǎn)程存儲器存儲設(shè)備中。將意識到,所 示網(wǎng)絡(luò)連接是示例性的,可使用在計算機之間建立通信鏈路的其它手段。
在隨后的描述中,除非另外指明,否則本發(fā)明將參考由一個或多個計算機執(zhí) 行的動作和操作的符號表示來描述。因此,將理解,這些動作和操作(有時稱為計 算機執(zhí)行的)包括計算機的處理單元對以結(jié)構(gòu)化形式表示數(shù)據(jù)的電信號的操縱。該 操縱變換了數(shù)據(jù)或在計算機的存儲器系統(tǒng)中的位置上維護數(shù)據(jù),從而以本領(lǐng)域技術(shù) 人員熟知的方式重新配置或以其它方式更改了計算機的操作。維護數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu) 是具有由數(shù)據(jù)的格式定義的特定屬性的存儲器的物理位置。然而,盡管本發(fā)明在上 述上下文中描述,但這并不意味著限制,如本領(lǐng)域技術(shù)人員將意識到的,下文描述 的動作和操作也可用硬件來實現(xiàn)。
現(xiàn)在參考圖2,本發(fā)明的一個說明性實施例涉及一種用于在非受管本地網(wǎng)絡(luò) 200上的少量計算機,例如十(10)個或更少的成員計算機的平臺,以形成非受管 安全工作組來提供對用戶訪問和資源共享的組級控制,而不需要使用集中式管理組 件。在一說明性實施例中,非受管本地網(wǎng)絡(luò)200以對等關(guān)聯(lián)來配置。非受管本地網(wǎng) 絡(luò)200被分類為非受管的是因為沒有中央服務(wù)器管理和存儲用戶帳戶信息。在非受 管安全工作組中,安全策略和訪問控制在組級上實現(xiàn),以防止不在組中的計算機或 用戶對資源的未經(jīng)授權(quán)的訪問和使用,同時允許在每用戶的基礎(chǔ)上對組內(nèi)資源的共
9在本發(fā)明的一個說明性實施例中,圖2示出小型本地網(wǎng)絡(luò)70,其代表是家庭 網(wǎng)絡(luò)和小型企業(yè)網(wǎng)絡(luò)。本地網(wǎng)絡(luò)是非受管的,意思是它沒有如域控制器等集中式管 理組件。如圖2所示,本地網(wǎng)絡(luò)具有網(wǎng)絡(luò)集線器或交換機72,以及與其連接的多 個計算機(或計算設(shè)備)。計算機之間的連接可以是無線的。例如,設(shè)備76是通 過接入點78與網(wǎng)絡(luò)通信的無線設(shè)備。
按照本發(fā)明的各說明性方面,本地網(wǎng)絡(luò)70上的一些計算機可形成一非受管安 全工作組。將意識到,非受管安全工作組不依賴于特定的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。例如,非 受管安全工作組可在由無線設(shè)備形成的自組織(adhoc)網(wǎng)絡(luò)中建立。由于管理因 素和復(fù)制數(shù)據(jù)的需求,非受管安全工作組平臺在組中的計算機數(shù)量保持較小時更為 有效。例如,可加入一個給定的非受管安全工作組的計算機數(shù)量可被限于一預(yù)定的 最大計算機數(shù)量(例如,在一個非受管安全工作組中為十個成員)。
作為示例,如圖2所示,計算機90, 92, 94和96形成了非受管安全工作組 100 (由連接這些計算機的虛線示意性地指示),該組具有用戶友好名稱 "TobyClub"。如果沒有可加入的現(xiàn)有組或者如果一計算機的用戶不想加入任何 現(xiàn)有的組,則可創(chuàng)建一個新的非受管安全工作組。在這點上,在本發(fā)明的一說明性 實施例中,每個計算機可僅屬于一個非受管安全工作組。如將在下面更詳細(xì)地描述 的,非受管安全工作組中的計算機在它們之間建立信任,并且在組內(nèi)共享如用戶帳 戶數(shù)據(jù)和用戶概況數(shù)據(jù)等信息。如計算機102等新的計算機可加入該非受管安全工 作組IOO,并且組中計算機可離開該安全工作組,并且在特殊情況下,可從組中被 驅(qū)逐出來。
圖3示出在非受管本地網(wǎng)絡(luò)上形成小規(guī)模非受管安全工作組的基礎(chǔ)概念。為 使計算機102加入另一計算機96以便形成非受管安全工作組,計算機102必須首 先與第二計算機96建立信任。這在以下情形下發(fā)生當(dāng)計算機102想要加入計算 機96所屬的現(xiàn)有安全工作組時,或者當(dāng)計算機102響應(yīng)來自計算機96的邀請以形 成一個新組時。有許多不同方法在兩個計算機之間建立信任。通常,建立信任要求 一個計算機通過顯示它知道另一計算機所知的某個秘密來向另一計算機認(rèn)證它自
己。在本發(fā)明的一說明性實施例中,該秘密是由另一計算機接受的組管理員的用戶 名和口令。在另一說明性實施例中,該秘密是由另一計算機生成的隨機個人標(biāo)識號 (PIN)。在某些實現(xiàn)中,可能需要兩個計算機之間的相互認(rèn)證。將意識到,在兩 個計算機之間建立信任的具體方法對于本發(fā)明是不是關(guān)鍵性的。在計算機96與102之間的信任已經(jīng)建立之后,這些計算機形成非受管安全工 作組,或者如果計算機96屬于一現(xiàn)有的非受管安全工作組,則計算機102被接納 到該組中。為此,在一說明性實施例中,每個非受管安全工作組和該安全工作組中 的每個節(jié)點被分配一個GUID (全局唯一標(biāo)識符),它是唯一標(biāo)識符。當(dāng)計算機變 成一個非受管安全工作組的成員(或者通過創(chuàng)建新組,或者通過加入現(xiàn)有組)時, 該機器的GUID和該機器上的用戶帳戶的GUID被改變或者被重新創(chuàng)建為該組的 GUID,以反映該網(wǎng)絡(luò)組的授權(quán)/身份。
在形成非受管安全工作組之后,用戶帳戶數(shù)據(jù)和用戶概況被復(fù)制到組中的每 個計算機。如圖3所示,計算機96上的用戶帳戶數(shù)據(jù)IIO被復(fù)制到計算機102, 反之亦然。在復(fù)制用戶帳戶之后,與這些用戶帳戶相關(guān)聯(lián)的用戶概況112被復(fù)制到 其它計算機。術(shù)語"用戶概況"在此用于表示屬于一特定用戶的數(shù)據(jù)。例如,用戶 概況可包括用戶的注冊表設(shè)置、用戶的所選文檔、以及安全策略、用戶頭像(即用 戶的圖標(biāo)表示)、以及用于個性化用戶會話的設(shè)置、配置和文件等等。用戶概況的 具體內(nèi)容取決于實現(xiàn)。安全工作組的管理員可在組中的一計算機上創(chuàng)建用戶帳戶和
設(shè)置安全策略,并且這些帳戶和安全策略被復(fù)制到該安全工作組中的所有機器。由
于組中的每個計算機具有全部用戶帳戶和用戶概況,因此具有有效帳戶的用戶可使 用其用戶名和口令登錄到組中的任何計算機上。復(fù)制如用戶頭像和用于個性化用戶
會話的設(shè)置、配置以及文件等數(shù)據(jù)還允許用戶具有跨非受管安全工作組中的各計算 機的統(tǒng)一用戶體驗。在本發(fā)明的一實施例中,帳戶數(shù)據(jù)和用戶概況的一個子集可以 實質(zhì)上一致而不是字面意義上同步。本發(fā)明的一實施例支持應(yīng)用程序虛擬化/同步, 其中用戶將應(yīng)用程序安裝在非受管安全工作組的一成員上,并且可在沒有將該軟件 安裝在其它成員上的情況下從非受管安全工作組的任何其它成員使用該應(yīng)用程序。 返回到圖2,在本發(fā)明的一說明性實施例中,能夠參與非受管安全工作組的計 算機96配備了安全組服務(wù)模塊116,用于處理非受管安全工作組的創(chuàng)建、加入與 操作。計算機96還具有本地安全授權(quán)機構(gòu)(LSA) 118和安全帳戶管理器(SAM) 120。本地安全授權(quán)機構(gòu)118是負(fù)責(zé)本地系統(tǒng)安全策略、用戶認(rèn)證、以及向操作系 統(tǒng)的事件日志發(fā)送安全消息的用戶模式進程。安全策略指定例如允許哪些用戶登錄 到該機器、口令策略、授予用戶和組的特權(quán)、以及系統(tǒng)安全審核設(shè)置等等。安全帳 戶管理器120管理存儲在計算機的系統(tǒng)注冊表中的數(shù)據(jù)庫,該數(shù)據(jù)庫包含標(biāo)識被允 許訪問該機器的用戶和組以及它們的口令和其它屬性的數(shù)據(jù)。該計算機還包括一個 或多個認(rèn)證模塊,如Windows NT⑧LAN管理器(NTLM)模塊122或Kerberos模塊126,用于按照所選的認(rèn)證協(xié)議來執(zhí)行認(rèn)證操作。此外,使用文件復(fù)制服務(wù)器
(FRS) 128來將數(shù)據(jù)和文件(包括用戶帳戶和概況)復(fù)制到非受管安全工作組中 的其它計算機。
在圖2所示的實施例中,應(yīng)用程序121與安全組服務(wù)模塊116接口,用于通 過API層模塊119來處理非受管安全工作組的創(chuàng)建、加入和操作。如將討論的, API層模塊119支持用于獲得有關(guān)非受管安全工作組的信息、創(chuàng)建非受管安全工作 組、加入非受管安全工作組和離開非受管安全工作組的應(yīng)用程序接口 (API)。
現(xiàn)在同時參考圖2和4,在本發(fā)明的一說明性實施例中,當(dāng)獨立計算機102 連接到本地網(wǎng)絡(luò)70并開機(步驟170)時,其操作系統(tǒng)自動發(fā)現(xiàn)本地網(wǎng)絡(luò)上是否 存在非受管安全工作組(步驟172)。為此,計算機102按照簡單服務(wù)發(fā)現(xiàn)協(xié)議
(SSDP)來廣播發(fā)現(xiàn)請求136,以檢測連接到本地網(wǎng)絡(luò)的其它機器。在這點上, 屬于安全工作組的計算機96上的安全組服務(wù)模塊116己經(jīng)向該計算機的SSDP服 務(wù)138注冊了安全工作組的友好名稱和GUID。響應(yīng)于SSDP請求,本地網(wǎng)絡(luò)70 上的每個計算機返回一個響應(yīng)。該響應(yīng)標(biāo)識作出響應(yīng)的計算機以及它是否是非受管
安全工作組的一部分,并且如果是,則還有有關(guān)該組的信息。例如,來自計算機 96的響應(yīng)150包括組名152,它指示該計算機是稱為"TobyClub"的非受管安全 工作組的成員。
在本發(fā)明的一個實施例中,如果計算機102檢測到本地網(wǎng)絡(luò)上的一個或多個 現(xiàn)有的非受管安全工作組(步驟176),則當(dāng)其用戶158 (圖2中的"Patrick") 登錄時, 一個用戶界面窗口彈出,詢問該用戶是否想要該計算機加入現(xiàn)有非受管安 全工作組中的任一個(步驟178)。該用戶界面窗口的一個示例示于圖5中。用戶 界面窗口 160提供該計算機已經(jīng)檢測到的本地網(wǎng)絡(luò)上的現(xiàn)有非受管安全工作組的 列表162,并且用戶可通過點擊組名來選擇一個組來加入。如果在本地網(wǎng)絡(luò)上沒有 檢測到現(xiàn)有的非受管安全工作組,則該列表為空。該用戶界面還包括査詢166,它 給予用戶創(chuàng)建新的非受管安全工作組的選項。因而,在沒有現(xiàn)有非受管安全工作組 時,用戶可選擇創(chuàng)建一個新的組(步驟180)。即使本地網(wǎng)絡(luò)上有現(xiàn)有的非受管安 全工作組,用戶仍可選擇創(chuàng)建一個新組而不是加入任何現(xiàn)有組。例如,如果計算機 102檢測到本地網(wǎng)絡(luò)上的計算機88不是任何安全工作組的成員(即計算機88是"獨 立"機器),則用戶158可決定創(chuàng)建一新安全工作組(一個計算機的安全工作組) (步驟184)并邀請計算機88加入該組(步驟186)。
如果用戶158 ( "Patrick")選擇創(chuàng)建新非受管安全工作組的選項(步驟180),則安全組服務(wù)模塊116創(chuàng)建該新組的新GUID,并且將該計算機的帳戶域GUID改 變?yōu)樵摻M的新GUID。安全組服務(wù)模塊116隨后創(chuàng)建"安全組節(jié)點"組,它是包含 代表該非受管安全工作組中計算機的計算機帳戶的本地安全組。("安全組節(jié)點" 是組名的一個示例。該實施例也支持其它組名。)只有在安全組節(jié)點組中列出的計 算機可以執(zhí)行與該組中其它計算機的復(fù)制。帳戶可連同強隨機口令一起創(chuàng)建。
安全組服務(wù)168還創(chuàng)建"安全組管理員"組,用于保存新非受管安全工作組 的管理員的憑證。在只有安全組管理員組中標(biāo)識的管理員才被允許在該安全組中添 加或移除節(jié)點。創(chuàng)建"安全組管理員"帳戶,并且提示用戶158輸入一個良好的(非 空)口令。("安全組管理員"是組名的一個示例。(如將討論的,本發(fā)明的各實 施例支持可用作口令的替代或者補充的個人標(biāo)識號(PIN)。)該實施例也支持其 它組名。)在用戶輸入口令之后,安全組管理員帳戶被添加到安全組管理員組。
另一方面,如果用戶158選擇加入由計算機102檢測到的現(xiàn)有非受管安全工 作組(步驟178),則選擇該組的節(jié)點中已經(jīng)響應(yīng)該SSDP請求的節(jié)點,并且建立 與該選定節(jié)點的安全組服務(wù)的遠(yuǎn)程過程調(diào)用(RPC)接口的連接。在圖2所示的示 例中,計算機102已經(jīng)選擇與計算機96交談。計算機96隨后發(fā)出要計算機102 認(rèn)證它自己的請求。通過正確地認(rèn)證自己,計算機102與計算機96建立信任(步 驟182)。在這么做時,計算機102也與組100的其余節(jié)點建立了信任,因為它們 信任計算機96并且假定信任計算機96所信任的任何計算機。然而,在替換實施例 中,想要加入非受管安全工作組的計算機可被要求個別地與組中的每個計算機建立 信任。
如上所述,建立信任的一種常見方法是計算機呈現(xiàn)其它計算機所知的秘密。 在本發(fā)明的一實施例中,使用用于對等者之間的相互認(rèn)證的自簽名證書。目標(biāo)節(jié)點 的證書可傳回經(jīng)認(rèn)證的要加入的計算機。在本發(fā)明的一說明性實施例中,秘密是在 目標(biāo)節(jié)點計算機96的安全組管理員組中注冊的組管理員的名稱和口令。響應(yīng)于來 自目標(biāo)節(jié)點計算機96的質(zhì)詢,計算機102提示用戶158輸入有效的管理員名稱和 口令。在一說明性實現(xiàn)中,管理員196 (圖2中例示為"Toby")可簡單地走到想 要加入非受管安全工作組的計算機102處并輸入其用戶名和口令。計算機102將輸 入的管理員名稱和口令發(fā)送到目標(biāo)節(jié)點計算機96。目標(biāo)節(jié)點計算機96檢查由計算 機102返回的管理員名稱和口令。如果它們是有效的并且對應(yīng)于在安全組管理員組 中找到的管理員帳戶,則計算機102變成非受管安全工作組100的成員。目標(biāo)節(jié)點 計算機96創(chuàng)建要加入的計算機102的計算機帳戶,并將目標(biāo)節(jié)點計算機的秘密傳
13回要加入的計算機102。要加入的計算機102隨后保存該目標(biāo)節(jié)點計算機的秘密。
此時,要加入的計算機102將啟動與目標(biāo)節(jié)點計算機96的"同步"操作。在完成
同步操作之后,建立了完全的信任。
之后,在非受管安全工作組的成員之間出現(xiàn)變化時復(fù)制用戶帳戶和用戶概況
(步驟188)。在一個說明性實現(xiàn)中,作為非受管安全工作組的成員的計算機周期 性地(例如每4分鐘)發(fā)送"喚起注意(Hello)"消息到該組中的所有其它節(jié)點。 喚起注意消息包含組GUID、節(jié)點的當(dāng)前系統(tǒng)時間和復(fù)制的最后更新計數(shù)。不要求 其它組成員響應(yīng),但將相應(yīng)地更新它們的組成員表,并記錄從該成員收到"喚起注 意"的最后時間。當(dāng)從LSA收到SAM變化時,計算機上的安全組服務(wù)發(fā)送"通 知(Notify)"消息到安全工作組中的所有節(jié)點。當(dāng)組節(jié)點收到通知消息時,它將 消息中的更新計數(shù)(UpdateCount)與其當(dāng)前的更新計數(shù)進行比較。如果收到的更 新計數(shù)比當(dāng)前的更新計數(shù)新,則接收者回調(diào)發(fā)送者以得到特定的變化列表并在本地 應(yīng)用這些變化。
在一替換的說明性實施例中,代替使用管理員名稱和口令作為秘密,目標(biāo)節(jié) 點計算機96生成一隨機個人標(biāo)識號(PIN)作為秘密。目標(biāo)節(jié)點計算機96的用戶 196("Toby")將該秘密PIN給予想要加入該組的計算機102的用戶158("Patrick")。 用戶158隨后響應(yīng)于該提示將這個PIN輸入到計算機102中,并且經(jīng)由網(wǎng)絡(luò)連接 將PIN傳送給目標(biāo)節(jié)點96以便建立信任。
圖6示出根據(jù)本發(fā)明的一實施例計算機系統(tǒng)(KitchenPC) 601加入非受管安 全工作組603的說明性場景。(本發(fā)明的其它實施例可利用其它技術(shù)來提供對想要 加入非受管安全工作組603的機器的認(rèn)證。)在該示例性場景中,計算機系統(tǒng) (DenPC) 605已經(jīng)是非受管安全工作組603的成員。力7乂是一個過程,通過這個 過程未加入的機器與現(xiàn)有非受管安全工作組的成員協(xié)作以獲得該非受管安全工作 組中的成員資格。在該說明性實現(xiàn)中,有十個主要步驟
1) KitchenPC 601通過用HouseCastle_Kpublic質(zhì)詢DenPC 605而將其認(rèn)證為非 受管安全工作組603的成員。如果DenPC 605響應(yīng)正確,則它證明 DenPC605知道共享秘密。
2) KitchenPC 601生成公/私鑰對并生成自簽名證書KitchenPC_Cert。
3) KitchenPC 601為自己創(chuàng)建一個KitchenPC帳戶并將KitchenPC—Cert與該 帳戶相關(guān)聯(lián)。
4) KitchenPC 601使用由驅(qū)動》/7乂的用戶提供的管理員的公知帳戶和和管理
14員的口令登錄到DenPC 605 。 KitchenPC 601將其證書傳遞給DenPC 605 。
5) DenPC 605安裝KitchenPC的證書。
6) DenPC 605創(chuàng)建KitchenPC 601的機器帳戶,將該帳戶與KitchenPC—Cert
相關(guān)聯(lián),隨后將該證書輸入到非受管安全工作組603。
7) DenPC (603)將其自己的證書和共享秘密返回給KitchenPC (601),后 者
a. 安裝DenPC_Cert。
b. 存儲共享秘密。
c. 從私鑰生成HouseCastle—Cert的副本并安裝該副本。
8) KitchenPC (601)創(chuàng)建DenPC 605的機器帳戶,并將該帳戶與DenPC—Cert 相關(guān)聯(lián)。
9) KitchenPC 601經(jīng)由功能發(fā)現(xiàn)607將自己發(fā)布(廣播)為非受管安全工作 組的成員。
10) KitchenPC 601啟動與DenPC 605的同步操作。(在前面的步驟中, KitchenPC 601和DenPC 605僅建立相互信任。 一旦它們具有相互信任, 同步操作就用來自其它計算機的證書、帳戶和組的完整集合來填充每個計 算機。)
將意識到,在建立信任階段期間的通信和在組成員之間為復(fù)制用戶帳戶、用 戶概況和與組操作有關(guān)的其它數(shù)據(jù)的后續(xù)通信應(yīng)該適當(dāng)?shù)厥軘?shù)字簽名與加密的保 護以保護數(shù)據(jù)的完整性與機密性。(在本發(fā)明的一實施例中,使用基于公鑰/私鑰 的認(rèn)證機制(PK/S信道認(rèn)證)。公鑰放在自簽名證書中,在以后用于驗證私鑰持 有者的身份。)為此,通信可遵循合適的認(rèn)證協(xié)議,如NTLM或Kerberos。在一 個說明性實現(xiàn)中,非受管安全工作組的節(jié)點使用(DCE) RPC來復(fù)制,RPC采用 NTLM認(rèn)證機制。信道以調(diào)用級認(rèn)證和私密性來保護,而訪問控制以對作為非受 管安全工作組的成員的調(diào)用者的基于服務(wù)器的檢査為基礎(chǔ)。使用認(rèn)證度量防止本地 網(wǎng)絡(luò)上的其它計算機對非受管安全工作組中的節(jié)點之間通信的竊聽與篡改。
在加入非受管安全工作組100之后,計算機102可自愿地離開該組。為此, 用戶158登錄到要從非受管安全工作組移除的機器102上,并通過適當(dāng)?shù)挠脩艚缑?窗口選擇離開該組。在一說明性實現(xiàn)中,當(dāng)計算機離開非受管安全工作組時,從安 全組節(jié)點組中移除該計算機,并且刪除其相應(yīng)的計算機帳戶。這個動作結(jié)束了用于 復(fù)制帳戶的信任。在計算機離開組時,連同所有計算機帳戶一起刪除安全組管理員和安全組節(jié)點組。然而,計算機GUID仍保留為與加入該組時的GUID—樣。在從 該組移除之后,計算機102變成本地網(wǎng)絡(luò)上的獨立計算機,因此工作組100變成一 個計算機的非受管安全工作組。(然而,在工作組100變成一個計算機的非受管安 全工作組之后,計算機隨后可加入它。)它不再被信任并且將再也接收不到對用戶 帳戶和概況的任何更新。
在某些特殊情況下,計算機可被"驅(qū)逐"出非受管安全工作組。例如,如果 組中一個計算機已經(jīng)被偷走,則需要將該計算機從該組中驅(qū)逐出去,因此以后不能 使用它來訪問該組的數(shù)據(jù)與資源。從安全組節(jié)點組中移除被驅(qū)逐的計算機,并刪除 其帳戶。這防止將來將帳戶信息復(fù)制到被驅(qū)逐的計算機。然而,可使用其它措施來 徹底地使被驅(qū)逐計算機與組斷絕關(guān)系。由于被驅(qū)逐計算機具有帳戶數(shù)據(jù)庫的完整副 本(包括口令),因此被驅(qū)逐計算機可試圖將它自己認(rèn)證為任何其它用戶(或計算 機)并仍獲得對安全工作組的訪問。因此,應(yīng)當(dāng)采取措施從而在被驅(qū)逐的計算機不 能竊聽通信并看見口令的情況下改變殘留秘密。作為驅(qū)逐過程的一部分,計算機的 秘密必須在改變?nèi)魏斡脩裘孛苤半x線改變。計算機秘密的改變可在專用信道上 "帶外"完成,如通過使用軟盤來承載秘密。在一實現(xiàn)中,在驅(qū)逐計算機之后,非 受管安全工作組的管理員196必須在沒有被驅(qū)逐計算機的情況下重建該組。作為恢 復(fù)過程的一部分,剩余在組中的一個計算機("恢復(fù)計算機")被隔離(即從網(wǎng)絡(luò) 中移除)并用于進行組恢復(fù)。為組中剩余的每個計算機生成一新的隨機LSA秘密 并在恢復(fù)計算機的本地帳戶數(shù)據(jù)庫中存儲為該計算機的新計算機口令。然而,新的 秘密不能通過網(wǎng)絡(luò)發(fā)送到其它計算機,因為有被驅(qū)逐的機器可接收更新的危險。為 解決這個問題,管理員196為安全工作組中每個剩余的計算機創(chuàng)建一個"驅(qū)逐"軟 盤(或任何其它便攜介質(zhì),如CD ROM),它包含該計算機的新LSA秘密。管理 員用他的管理員帳戶登錄到他想要保持在非受管安全工作組中的每個計算機上,并 在該計算機上運行驅(qū)逐盤以改變該計算機的口令。一旦驅(qū)逐盤在組中剩余的機器上
運行,要求所有用戶在登錄到組中的計算機上時改變他們的口令,因為被驅(qū)逐計算 機具有所有用戶的現(xiàn)有口令(或至少有導(dǎo)出密鑰)。
按照本發(fā)明的至少某些方面的非受管安全工作組的一個優(yōu)點是使機器與機器 的通信安全。按照本發(fā)明的一個方面,可在成員機器與請求加入非受管安全工作組 的機器之間使用自簽名證書。而且,如上所述創(chuàng)建的驅(qū)逐軟盤可被分發(fā),其中所有 機器帳戶基本上在同時被重置為新的隨機口令。在重置口令時,成員機器將失去通 信的能力;然而,機器將在驅(qū)逐軟盤輪到它時獲得通信的能力。得不到驅(qū)逐軟盤的機器(例如被驅(qū)逐機器)只擁有舊的口令,并且不能與非受管安全工作組通信。按 照本發(fā)明的至少某些方面的非受管安全工作組的另一個優(yōu)點是防止經(jīng)由用戶帳戶 的非授權(quán)訪問。按照本發(fā)明的一個方面,所有用戶帳戶被改變。按照本發(fā)明的另一 方面,口令被設(shè)置為在下次登錄時過期。
按照本發(fā)明的至少某些方面的非受管安全工作組的一個優(yōu)點是,每個用戶具 有組中所有計算機知道的身份。因此,用戶能用同一用戶名和口令登錄到安全工作 組中的任何計算機上。例如,在小型企業(yè)設(shè)置中,職員能用同一用戶名和口令登錄 到形成安全工作組的本地辦公網(wǎng)絡(luò)上的任何計算機上,而不需要分別在每個計算機 上設(shè)置用戶帳戶。同樣,當(dāng)用戶在組中的計算機之一上改變其口令時,該改變將被 復(fù)制到其它計算機。因而,非受管安全工作組可顯著地簡化用戶帳戶的創(chuàng)建與修改, 并且使組中的計算機對于授權(quán)用戶更加"可訪問"。
非受管安全工作組中的計算機的改進的網(wǎng)絡(luò)集成還允許用戶享受計算機網(wǎng)絡(luò) 的益處。在登錄到組中的任何計算機中之后,用戶能使用該用戶自己的設(shè)置訪問該 用戶的所有文檔,而無論這些文檔和設(shè)置實際存儲在何處。這再次成為可能,因為 用戶的所有文檔與所有計算機所識別的單一用戶身份相關(guān)聯(lián)。因而,可以作出一個 査詢來標(biāo)識給定用戶的所有文檔與設(shè)置。這使用戶能夠在整個安全工作組上具有其 全部文檔與設(shè)置的"統(tǒng)一"視圖。
如上所述,在安全工作組中的計算機之間復(fù)制的用戶概況可包括用戶的文檔。 在一說明性實施例中,給定用戶一組預(yù)選文檔,例如在用戶的"我的文檔"文件夾 中的文檔,被自動復(fù)制到安全工作組中的每個計算機。當(dāng)用戶已經(jīng)修改了其中一個 文檔時,檢測到文檔修訂,并且被修改的文檔由文件復(fù)制服務(wù)(FRS)復(fù)制到組中 其它計算機。在本發(fā)明的一說明性實施例中,為減少計算機為存儲被復(fù)制的文檔所 使用的存儲器量,超過閾值大小的文件不被復(fù)制。如果文件超過閾值大小,代之以 僅將存儲該文件的計算機上指向該文件的鏈接復(fù)制到其它計算機。
非受管安全工作組還允許在組用戶之間安全地共享文件。想要與第二用戶共 享其文檔的用戶能修改該文檔的屬性,以指示允許第二用戶訪問該文檔。當(dāng)?shù)诙?戶使用應(yīng)用程序來訪問該文檔時,檢査文檔屬性以確認(rèn)第二用戶已被給予訪問該文 檔的權(quán)限。在一說明性實現(xiàn)中,小型企業(yè)網(wǎng)絡(luò)中的安全工作組的用戶能僅與一個其 它用戶共享文檔。在一替換的說明性實施例中,非受管安全工作組的用戶能與組中 所有用戶共享該用戶的文件。這個實現(xiàn)可適用于家庭網(wǎng)絡(luò)設(shè)置。
非受管安全工作組可允許尚未加入組的計算機具有對該組的有限訪問。例如,
17用戶可帶回其工作用的膝上型計算機并將它連接到其家庭網(wǎng)絡(luò),但選擇不加入家庭 網(wǎng)絡(luò)上的安全工作組。在這種情況下,非成員計算機可被給予來賓狀態(tài),并允許它 訪問一組預(yù)選的資源。同樣,傳統(tǒng)計算機(即沒有用于相關(guān)于非受管安全工作組的 操作的軟件的計算機)仍可用與其在常規(guī)的工作組中相同的方式與非受管安全工作 組中的計算機通信。
一旦計算機(機器)變成非受管安全工作組的一部分,在非受管安全工作組 的任何成員發(fā)生變化時,就在成員計算機之間復(fù)制和同步用戶帳戶和用戶組。(變 化可對應(yīng)于修改用戶帳戶信息或添加用戶帳戶信息。)參加非受管安全工作組的計 算機是對等的,沒有指定的主計算機。在非受管安全工作組中的計算機可通過網(wǎng)絡(luò) 通告變化。該操作允許成員計算機啟動復(fù)制,并因而彼此保持同步。
參與復(fù)制的計算機維護這些計算機將復(fù)制的數(shù)據(jù)的狀態(tài)。這些計算機跟蹤以 下內(nèi)容
計算機版本號只要計算機上的任何帳戶有變化就更新該號碼。該版本 號在高級別上確定何時需要同步操作。
帳戶版本號只要計算機上的特定帳戶有變化就更新該號碼。該版本號 用于在需要同步操作時確定哪些帳戶要同步,并且是按每個帳戶來跟蹤 的。
復(fù)制可以是面向拉(pull-oriented)的復(fù)制,其中每個計算機在其計算機版本號變 化時通告該版本號。當(dāng)非受管安全工作組的成員檢測到另一成員已經(jīng)通告了新版本 號時,該成員用它在其記錄中所具有的該計算機的版本號來檢査這個版本號。如果 該成員確定另一計算機已經(jīng)發(fā)布了較新的數(shù)據(jù),則它啟動復(fù)制。
在一說明性實施例中,所有用戶帳戶被復(fù)制。所有帳戶組被復(fù)制;因而,在 一個計算機上作為管理員的用戶將被復(fù)制為其它計算機上的管理員。下列數(shù)據(jù)被復(fù) 制
>用戶名 >用戶口令 >用戶頭像
>帳戶版本號該數(shù)據(jù)由非受管安全工作組用于通知成員何時它們應(yīng)當(dāng)更新
它們的本地數(shù)據(jù)。 >用戶組名 >用戶組成員列表>計算機版本號該數(shù)據(jù)由非受管安全工作組用于決定是否要與另一計算機 啟動同步操作。
>非受管安全工作組秘密該數(shù)據(jù)是機器對機器秘密,它建立非受管安全工 作組的機器之間的信任。 圖7示出根據(jù)本發(fā)明的一個說明性實施例用于非受管安全工作組中將經(jīng)更新 的帳戶信息從一成員計算機提供給另一計算機的流程圖700。在步驟701,成員計 算機確定存儲在該成員計算機上的帳戶信息中是否有變化。如果沒有變化,則該過
程退出。如果有變化,則在步驟703,該計算機通過使用功能發(fā)現(xiàn)消息發(fā)布相關(guān)聯(lián)
的計算機版本號來通告該變化。本發(fā)明的實施例可使用其它發(fā)布協(xié)議,例如前述的
SSDP來發(fā)布相關(guān)聯(lián)的計算機版本號。在步驟705,成員計算機確定是否從另一計 算機接收到對用戶帳戶列表的請求。如果沒有,則該過程退出。如果有,則在步驟 707,成員計算機將列表發(fā)送給該另一計算機。如果特定的帳戶信息已經(jīng)在成員計 算機上更新或者添加,則該另一計算機可進一步請求相應(yīng)的帳戶信息。在步驟709, 確定是否接收到這樣的請求。如果沒有接收到進一步的請求,則該過程退出。如果 已經(jīng)接收到進一步的請求,則在步驟7U,成員計算機將指定的帳戶信息發(fā)送到該 另一計算機。
圖8示出根據(jù)本發(fā)明的一個說明性實施例用于在非受管安全工作組中從成員 計算機獲得經(jīng)更新的帳戶信息的流程圖800。(流程圖800對應(yīng)于在圖7所示的另 一計算機上執(zhí)行的過程。)在步驟801,該另一計算機確定是否接收到成員計算機 已經(jīng)改變了帳戶信息的通告。如果沒有,則該過程退出。如果已經(jīng)接收到通告,則 在步驟803,該另一計算機將所通告的版本號與在記錄上所具有的成員計算機的版 本號進行比較。如果不是,則該過程退出。如果所通告的版本較新,則在步驟805, 該另一計算機向成員計算機請求用戶帳戶列表。在步驟807,該另一計算機作出對 已經(jīng)被更新的或新的帳戶信息的請求。在步驟809,該另一計算機在沖突解決(稍 后討論)之后更新存儲在該另一計算機上的帳戶信息。
盡管經(jīng)更新的帳戶信息可根據(jù)流程圖700來獲得,但本發(fā)明的實施例支持其 它帳戶更新過程。在本發(fā)明的一實施例中,第一成員計算機廣播帶有經(jīng)更新的版本 號的通告,以指示在帳戶信息中已發(fā)生變化。非受管安全工作組的第二成員響應(yīng)于 來自該成員計算機的通告,將帳戶版本號發(fā)送到第一成員計算機。因此,第一成員 計算機向第二成員計算機返回較新的用戶帳戶列表。
當(dāng)新計算機加入非受管安全工作組時,它沒有與該非受管安全工作組相關(guān)的
19帳戶數(shù)據(jù)。此時,它用非受管安全工作組數(shù)據(jù)更新它自己。只要在非受管安全工作 組的任何參與成員上改變了任何用戶帳戶或組,該變化就可經(jīng)由功能發(fā)現(xiàn)(或另一 發(fā)布機制,例如SSDP)來通告。通告觸發(fā)非受管安全工作組的成員之間的復(fù)制序 列。非受管安全工作組中的計算機通過經(jīng)由功能發(fā)現(xiàn)發(fā)布它們的計算機版本號來通 告它們的變化。
當(dāng)一成員離開非受管安全工作組時,用戶可決定從該計算機上刪除某些帳戶。 這個變化,以及非受管安全工作組的經(jīng)更新的成員資格可被復(fù)制到其余的成員。當(dāng) 一成員被驅(qū)逐時,非受管安全工作組的秘密被改變。秘密的變化被傳播到非受管安 全工作組中的其它成員。
當(dāng)機器首次加入非受管安全工作組時,機器之間的初始信任通過管理員用口 令登錄來建立。 一旦信任已建立,則這些機器可交換自簽名證書并通過基于證書的 相互認(rèn)證來執(zhí)行認(rèn)證。(如前所述,可使用其它認(rèn)證機制。) 一旦計算機已經(jīng)與另 一計算機認(rèn)證,該計算機隨后就能復(fù)制帳戶信息。
在本發(fā)明的一說明性實施例中,安全帳戶管理器(SAM)數(shù)據(jù)庫通過在輔助
屬性文件中存儲新屬性來擴展。(安全帳戶管理器數(shù)據(jù)庫包含定義的用戶和組以及 相應(yīng)的口令和其它屬性。)輔助屬性文件(對應(yīng)于本地存儲的數(shù)據(jù))在復(fù)制帳戶時 被復(fù)制。而且,輔助屬性文件能被擴展,以包括附加的屬性,例如,用戶頭像、口
令提示、帳戶GUID和帳戶證書。
非受管安全工作組包括多個機器,它們彼此是對等的。這意味著對同一對象 的變化可在任何參與機器上由具有適當(dāng)權(quán)限的人來作出。變化可在成員機器"在線" 時或者在這些機器"離線"時作出。在機器離線時對機器所作的變化會導(dǎo)致與用戶 帳戶或帳戶組沖突的變化,如下更詳細(xì)地描述的。非受管安全工作組特征可利用一 種機制來檢測沖突。隨后,沖突可被自動解決或者在授權(quán)用戶的幫助下解決。
帳戶的"變化"被定義為該帳戶的任何屬性的變化。沖突解決與檢測可在"整 個帳戶級"上執(zhí)行。(另外,沖突解決與檢測可在每個屬性級上執(zhí)行。)作為一個 示例,如果在一個機器上改變一個帳戶的頭像并在另一機器上改變同一帳戶的口 令,則這兩個帳戶都被認(rèn)為有變化,因而將要求沖突解決,即使在屬性級上這些變 化是非重疊的。
兩個成員機器之間的同步受到這些機器不同步的時段的影響。如果這些機器 已經(jīng)分離一段長時間,則這些機器之間的差異被認(rèn)為是沖突。在一說明性實施例中,
這些差異是使用管理用戶界面(UI)通過人工干預(yù)來解決的。 一個說明性的長時段是當(dāng)機器之間的最后更新時戳差異至少是30天,而一個說明性的短時段是當(dāng)兩 個成員機器之間的"最后更新"時戳小于30天時這兩個機器之間沒有連接。設(shè)置
說明性的30天閾值,使得大多數(shù)正常的離線情形,例如機器每天關(guān)機,能自動處
理沖突解決。由于用戶帳戶和組不會非常頻繁地變化,因此上述準(zhǔn)則也用于確定當(dāng) 計算機從備份恢復(fù)時同步如何發(fā)生。
長時段同步在以下時間發(fā)生機器已經(jīng)分離與如上定義的長時段一樣長的相 當(dāng)長的時段,且機器之間發(fā)生了變化。同步阻塞錯誤被發(fā)送到較老的機器的同步處 理程序。較老的機器上的用戶能夠正常使用機器,因為其帳戶與非受管安全工作組 的其余機器沒有沖突。在本發(fā)明的一說明性實施例中,同步阻塞錯誤允許該機器上 的管理員通過提供下列選擇來解決同步
從較老的機器丟棄所有變化并選取最后的變化。該選擇等價于較老的機 器第一次加入非受管安全工作組。
同步來自較老的機器的變化。在本發(fā)明的一實施例中,如果用戶選取這 個選擇,則機器之間的同步會如這些機器分離了一段短時間一樣地發(fā)生。 本發(fā)明的其它實施例不區(qū)分長和短時段沖突,從而所有沖突作為短時段 沖突處理。
短時段同步在機器之間上一次發(fā)生變化起它們已經(jīng)分離了短時段時發(fā)生。短 時段同步的處理依賴于要同步的變化的特性。本發(fā)明的一說明性實施例支持下列具 有相關(guān)聯(lián)解決的變化。
無沖突變化
> 在一個機器上添加了帳戶通過在其它機器上創(chuàng)建同一帳戶來解決。
> 在一機器上刪除用戶帳戶通過在其它機器上刪除同一帳戶來解決。 如果一個機器是成員,則在較老的機器上刪除帳戶的時候,該機器 上的管理員將被警告該刪除對其余成員的影響。
> 在一個機器上改變帳戶的屬性通過在其它機器上改變同一帳戶的 同一屬性來解決。
> 在一機器上添加用戶組:通過在其它機器上創(chuàng)建同一用戶組來解決。
> 在一機器上刪除用戶組:通過在其它機器上刪除同一用戶組來解決。 如果一機器是成員,則在較老的機器上刪除用戶組時,在該機器上 的管理員將被警告該刪除對其它成員的影響。
> 在一機器上改變用戶組的成員資格通過在其它機器上改變同一用
21戶組的成員資格來解決。
> 交換兩個用戶的顯示名稱:通過在其它機器上交換這些名稱來解決。 注意,這導(dǎo)致在機器上重復(fù)的顯示名稱。然而,由于用戶帳戶是由 GUID (全局唯一標(biāo)識符)標(biāo)識的,因此該變化是非沖突變化。
沖突變化
> 在兩個不同機器上改變同一用戶帳戶通過發(fā)送同步阻塞錯誤并在 較老的機器上拒絕該用戶參與非受管安全工作組直到該用戶或管理 員解決該沖突為止來解決。
在本發(fā)明的一實施例中,統(tǒng)一地對待所有沖突。在長時段與短時段沖突之間 沒有區(qū)別。所有沖突作為短時段沖突來處理。
在本發(fā)明的一實施例中,如果新帳戶不匹配按照GUID的任何本地帳戶并且 具有與本地帳戶相同的名稱,則產(chǎn)生沖突。
非受管安全工作組的帳戶中的沖突經(jīng)由與沖突管理用戶界面的集成來呈現(xiàn)。 如果是在當(dāng)前機器上,則個別用戶在該用戶的帳戶發(fā)生沖突時被通知該沖突。在任 何成員機器上的管理員被通知有關(guān)非受管安全工作組內(nèi)的所有帳戶沖突,如在管理 員所登錄的機器上觀看到的。換言之,如果非受管安全工作組中的不同機器具有在 不同機器上發(fā)生沖突的不同帳戶,則在每個機器上的視圖是不同的。
如果對帳戶變化的最終選擇被復(fù)制到所有成員機器,則沖突的解決被認(rèn)為已 經(jīng)會聚了。當(dāng)在一個別機器上解決了帳戶沖突時,相應(yīng)的變化被復(fù)制到其它機器。 取決于所解決的沖突的特性,在其它機器上的某些現(xiàn)有沖突可隨著當(dāng)前機器上的沖 突的解決而解決。
非受管安全工作組依賴于多個機器通過網(wǎng)絡(luò)通信并能夠響應(yīng)于成員機器的變 化而改變其狀態(tài)的能力。網(wǎng)絡(luò)與參與機器會以多種方式發(fā)生故障。因此,有必要擁 有非受管安全工作組功能,其方式是成員機器和非受管安全工作組作為整體能預(yù)測 性地處理錯誤、故障并且進行清理和從這類錯誤和故障的恢復(fù)。非受管安全工作組 一般可通過在開始原子事務(wù)之前利用標(biāo)記標(biāo)志來處理錯誤與故障。如果因任何原因 事務(wù)失敗,則記錄該標(biāo)志并在下次開始服務(wù)時執(zhí)行清理。復(fù)制動作被設(shè)計為在機器 變得可用時自動繼續(xù),因而在復(fù)制期間的故障被自動處理。如果在機器上的特征安 裝以任何方式被破壞,則服務(wù)在該機器上停止,并且機器不再參與非受管安全工作 組。
根據(jù)本發(fā)明的諸方面的非受管安全工作組支持眾多用戶情形。作為示例,一個用戶情形涉及家庭網(wǎng)絡(luò)中的"漫游家長控制"。家長可創(chuàng)建家長控制限制,用于 限制孩子如何使用計算機。家長控制限制被復(fù)制到組中的所有計算機。因而,當(dāng)孩 子登錄到組中的任何計算機上時,家長控制限制"跟隨"著孩子,而無論其正在使 用哪個計算機。另外,孩子的審核報告隨著孩子在組中的每個計算機上的活動而被 更新。根據(jù)本發(fā)明的說明性實施例,用戶情形支持在非受管安全工作組中漫游、共 享數(shù)據(jù)對象以及備份用戶的數(shù)據(jù)對象等等。用戶情形建立于非受管安全工作組內(nèi)的 信任與用戶數(shù)據(jù)復(fù)制之上。
本發(fā)明的一說明性實施例提供一組接口 (應(yīng)用程序編程接口 (API)),該組 接口可由應(yīng)用程序或其它服務(wù)用于査詢非受管安全工作組的屬性和成員,并用于啟 動非受管安全工作組內(nèi)的動作。
本發(fā)明的說明性實施例支持下列接口
IWorkgroupNetlnformation (工作組網(wǎng)絡(luò)信息) 一提供局域網(wǎng)內(nèi)的非受 管安全工作組和無聯(lián)系計算機的列表。
IWorkgroupInformation (工作組信息) 一提供有關(guān)給定非受管安全工 作組的信息,包括作為整體的特征的屬性和成員計算機列表。
IWorkgroupComputerlnformation (工作組計算機信息)—提供有關(guān)非 受管安全工作組內(nèi)的計算機的信息。
'IWorkgroupNetContro1 (工作組網(wǎng)絡(luò)控制) 一允許用戶創(chuàng)建新的非受管 安全工作組。
IWorkgroupControl (工作組控制)—允許用戶使計算機加入或離開非 受管安全工作組。
/『oAgra^Uw/orm油'ow接口提供有關(guān)非受管安全工作組的信息。
interface IWorkgroupNetlnformation : IUnknown
〃
//創(chuàng)建已知工作組的枚舉器.
〃
HRESULT GetWorkgroups([out] IEnum Workgroups** ppEnum);
〃〃按名稱提供已知工作組的接口. 〃如果計算機當(dāng)前屬于一個工作組,則pszWorkgroup
〃可以是空串,以指示當(dāng)前工作組。 〃
〃如果pszWorkgroupGUID是空串且當(dāng)前 〃計算機不是工作組的成員,則GetWorkgroup將 〃返回S—FALSE并且將承ppWorkgroup設(shè)置為NULL.
〃
HRESULT GetWorkgroup([in,string] LPCWSTR pszWorkgroupGUID, [out] IWorkgroupInformation** pp Workgroup);
〃
//創(chuàng)建已知的無聯(lián)系計算機的枚舉器.
〃
HRESULT GetComputers([out] IEnumString* * ppEnum);
〃
〃注冊變化通知 〃
HRESULT Advise([in] IUnknown* pUnk, [out] DWORD* pdwCookie); HRESULT Unadvise(而ORD dwCookie);
(枚舉工作組)禾卩/五"wmCom;wfeM (枚舉計算機)都是從 /EWwmen^Zj/e (可枚舉)f底生白勺。TEwwml^orAgrowjw返回/J^or^grow/ /"/brmo^'OM接 口 ,其每一個代表一個已知的非受管安全工作組。/五mw7Com;^to^返回LPWSTR,
其每一個是與任何非受管安全工作組無聯(lián)系的已知計算機的名稱。
interface IEnumWorkgroups : IUnknown HRESULT Next([in] ULONG celt,
24[out, size_is(celt),
length—is(*pceltFetched)] IWorkgroupInformation** rgelt, ULONG* pceltFetched); HRESULT Skip([in] ULONG celt); HRESULT ResetO;
HRESULT Clone([out] IEnum Workgroups** ppEnum Workgroups);
interface IEnumComputers : IUnknown
HRESULT Nextflm] ULONG celt, [out, size—is(celt),
length—is(*pceltFetched)] IWorkgroupComputerlnformation** rgelt, ULONG* pceltFetched); HRESULT Skip([in] ULONG celt); HRESULT ResetO;
HRESULT Clone([out] IEnumComputers** ppEnumComputers);
對于變化通知,/『oAgraM/ A^/w/om2油'o":Mofv&e (通告)將接受 /『oAgrawpA^/w/(^ma"owJcfv^e (工作組網(wǎng)絡(luò)信息通告)。 interface IWorkgroupNetlnformationAdvise : IUnknown
〃
〃工作組發(fā)現(xiàn)的通知 〃
HRESULT OnWorkgroupFound([in] IWorkgroupInformation* pWI); HRESULT OnWorkgroupLost([in] IWorkgroupInformation* pWI);
〃
〃計算機發(fā)現(xiàn)的通知〃
HRESULT OnComputerFound([in, string] LPCWSTR pszComputer); HRESULT OnComputerLost([in, string] LPCWSTR pszComputer);
/『onfcgraw; /w/o,a"o"接口提供有關(guān)給定非受管安全工作組的信息,包括作 為整體的非受管安全工作組的屬性和成員計算機列表。
interface IWorkgroupInformation : IUnknown
〃
〃取工作組的主名稱 〃
〃返回的名稱串必須通過CoTaskMemFree()釋放.
〃
HRESULT GetName([out,string] LPWSTR* ppszName);
〃
〃取工作組的唯一身份(GUID) 〃
〃唯一身份在工作組的生存期內(nèi)從不改變 //-用它作參考
〃
HRESULT GetGUID([out,string] LPWSTR* ppszGUID);
〃
〃取創(chuàng)建工作組的時間 〃
HRESULT GetCreationTime([out] FILETIME* pft);
26〃取工作組中計算機的枚舉器 〃
HRESULT GetComputers([out] IEnumComputers** ppEnum);
〃
〃注冊變化通知 〃
HRESULT Advise([in] lUnknown* pUnk, [out] DWORD* pdwCookie); HRESULT Unadvise(DWORD dwCookie);
X寸 于 變 ^f七 通 失口 , /PForA:graw; /w/or附a"o".v^^v&e 接 受 /衡Agrow/ /"/b,fl"o"」£/v/"(工作組信息通告)。
interface IWorkgroupInformationAdvise : lUnknown
〃
〃工作組成員資格變化的通知.
〃
//注意.*不支持對應(yīng)于
〃除本地計算機所屬的工作組以外的任何工作組的 〃IWorkgroupInformation.
〃
HRESULT OnMemberAdded([in] IWorkgroupComputerlnformation* pComputer);
HRESULT OnMemberRemoved([in] IWorkgroupComputerlnformation* pComputer》
〃
〃工作組成員狀態(tài)變化的通知
27〃
HRESULT OnMemberStateChanged([in] IWorkgroupComputerlnformation*pComputer);
IWorkgroupComputerlnformation提供有關(guān)非受管安全工作組內(nèi)的計算機的信息。
interface IWorkgroupComputerlnformation : IUnknown
〃
〃取計算機名稱〃
〃返回的名稱串必須通過CoTaskMemFree()釋放.
〃
HRESULT GetName([out,string] LPWSTR* ppszName);
〃
〃取計算機的描述〃
〃返回的名稱串必須通過CoTaskMemFree()來釋放.
〃
HRESULT GetDescription([out,string] LPWSTR* ppszDescription);
〃
〃取計算機與工作組同步的最后時間〃
〃返回值可以是零,表示未知〃
HRESULT GetLastSyncTime([out] FILETIME* pft);〃
〃取計算機的唯一身份(GUID)〃
〃唯一身份在工作組中的計算機的生存期內(nèi)從不改變〃-使用它作為參考
〃
HRESULT GetUniqueID([out] GUID* pGUID);
IWorkgroupNetControl接口是經(jīng)由Querylnterface(QI)(查詢接口 )從IWorkgroupNetlnformation獲得的。
interface IWorkgroupNetControl : IUnknown
〃
〃創(chuàng)建新工作組,其中當(dāng)前無聯(lián)系的機器變成第一個成員,〃即創(chuàng)建一個計算機的工作組.
〃
HRESULT Create([in, string] LPCWSTRpszWorkgroupAdminPassword,[out] IWorkgroupInformation* * ppWorkgroup);
〃
〃使計算機不加入它其當(dāng)前工作組?!ㄔ撚嬎銠C隨后回到未加入狀態(tài).
〃
HRESULT Leave();iTF0^:graw;7C0"&0/接口是經(jīng)由QI從/『0rA:graw; /"/0m7fl"0"獲得的。interface IWorkgroupControl: IUnknown
〃
〃將計算機加入指定的工作組.
〃
HRESULT Join([in,string] LPCWSTR pszAdminPassword);
〃
〃從工作組驅(qū)逐指定計算機 〃
HRESULT Evict([in,string] LPCWSTR pszComputer);
圖9示出根據(jù)本發(fā)明的一說明性實施例在非受管安全工作組中支持應(yīng)用程序 編程接口 (API)的流程圖900。如果應(yīng)用程序(例如如圖2所示的應(yīng)用程序121) 在步驟901生成API請求,則在步驟903解析該API請求以確定API類型和相應(yīng) 的參數(shù)(例如,非受管安全工作組id)。因此,API請求消息是針對所支持的API 類型來處理的,如步驟905-913所示。
應(yīng)用程序編程接口 (或簡稱之為接口)可以被視為用于允許一個或多個代碼 段與由一個或多個其它代碼段提供的功能進行通信或?qū)ζ溥M行訪問的任何機制、進 程、協(xié)議。或者,編程接口可以被視為能夠通信地耦合至其它計算機的一個或多個 機制、方法、函數(shù)調(diào)用、模塊等的系統(tǒng)的組件的一個或多個機制、方法、函數(shù)調(diào)用、 模塊、對象等。上述語句中的術(shù)語"代碼段"意在包括一個或多個指令或代碼行, 并包括例如,代碼模塊、對象、子例程、函數(shù)等等,而無論應(yīng)用的術(shù)語是什么、或 代碼段是否被單獨編譯、或代碼段是否作為源代碼、中間代碼或目標(biāo)代碼來提供、 代碼段是否在運行時系統(tǒng)或進程中使用、或它們是否位于同一或不同機器上或跨多 個機器分布、或由代碼段表示的功能是否完全由軟件、完全由硬件或由硬件和軟件 的組合來實現(xiàn)。
概念上,編程接口可以被一般地査看,如圖IOA或圖IOB所示的。圖10A示 出了接口 "接口 1"為管道,第一和第二代碼段通過該管道進行通信。圖IOB示出 了接口包括接口對象Il和12 (可以是或不是第一和第二代碼段的部分),它們允許系統(tǒng)的第一和第二代碼段通過介質(zhì)M進行通信。在圖10B的視圖中,可以認(rèn)為
接口對象Il和I2為同一系統(tǒng)的分開的接口,并且也可以認(rèn)為對象Il和I2加上介 質(zhì)M構(gòu)成了接口。盡管圖IOA和IOB示出了雙向流程以及該流程的每一側(cè)上的接 口,但某些實現(xiàn)可僅具有一個方向上的信息流(或如下所述沒有信息流),或僅具 有一側(cè)的接口對象。作為示例而非局限,諸如應(yīng)用程序編程或程序接口 (API)、 入口點、方法、函數(shù)、子例程、遠(yuǎn)程過程調(diào)用和組件對象模型(COM)接口等術(shù) 語被包含在編程接口的定義之內(nèi)。
這類編程接口的各方面可包括第一代碼段向第二代碼段發(fā)送信息的方法(其 中,"信息"以其最廣泛的意義使用,并包括數(shù)據(jù)、命令、請求等等);第二代碼 段接收信息的方法;以及該信息的結(jié)構(gòu)、序列、句法、組織、模式、定時和內(nèi)容。 在這一點上,只要信息以接口所定義的方式傳輸,底層傳輸介質(zhì)本身可以對接口的 操作不重要,無論該介質(zhì)是有線還是無線,或兩者的組合。在某些情況下,信息可 以不在常規(guī)意義上的一個或兩個方向上傳遞,因為信息傳輸可以或者通過另一機制 (如,信息被放置在與代碼段之間的信息流分離的緩沖區(qū)、文件等中)或者不存在, 如當(dāng)一個代碼段僅訪問由第二代碼段執(zhí)行的功能的時候。這些方面的任一個或所有 可以在給定的情況下是重要的,如,取決于代碼段是否是松耦合或緊耦合配置的系 統(tǒng)的一部分,并且因此該列表應(yīng)當(dāng)被認(rèn)為是說明性的而非限制。
編程接口的這一概念對本領(lǐng)域的技術(shù)人員是已知的,并且可以通過閱讀上述 本發(fā)明的詳細(xì)描述而清楚。然而,有其它方法來實現(xiàn)編程接口,并且除非明顯地排 除,否則這些方法也由所附權(quán)利要求書包含在內(nèi)。這些其它方法看似比圖IOA和 10B的視圖更精密或復(fù)雜,但是它們?nèi)詧?zhí)行類似的功能來實現(xiàn)同一整體結(jié)果?,F(xiàn)在 簡要描述編程接口的某些說明性替換實現(xiàn)。
可以通過將通信分裂成多個離散通信來間接地實現(xiàn)從一個代碼段到另一個的 通信。這在圖IIA和11B中示意性地描述。如圖所示,可以按照可分功能集來描 述某些接口。由此,可以分解圖IOA和10B的接口功能來達到相同的結(jié)果,如同 可以在數(shù)學(xué)上提供24,或2乘2乘3乘2—樣。因此,如圖11A所示,可以細(xì)分 由接口 "接口 1"提供的功能以將該接口的通信轉(zhuǎn)換成多個接口 "接口 1A"、"接 口 1B"、"接口 1C"等,而達到相同的結(jié)果。如圖IIB所示,由接口 II提供的 功能可以被細(xì)分成多個接口 Ila、 Ilb、 Ilc等,而達到相同的結(jié)果。類似地,從第 一代碼段接收信息的第二代碼段的接口 12可以被分解成多個接口 I2a、 I2b、 I2c等。 當(dāng)分解時,包括在第一代碼段中的接口的數(shù)量不需要匹配包括在第二代碼段中的接
31口的數(shù)量。在圖IIA或11B的任一情況下,接口 "接口 1"和Il的功能性精神分 別與圖1B和1C的保持相同。接口的分解也可遵從結(jié)合、交換和其它數(shù)學(xué)性質(zhì), 使得分解較難識別。例如,操作的排序可以是不重要的,并且因此由接口完成的功 能可以在達到該接口之前由另一段代碼或接口較好地完成,或者由系統(tǒng)的單獨組件 執(zhí)行。此外,編程領(lǐng)域的普通技術(shù)人員可以理解有各種方式來作出達到相同結(jié)果的 不同函數(shù)調(diào)用。
在某些情況下,可能忽略、添加或重定義編程接口的某些方面(如參數(shù)),
而仍達到預(yù)期的結(jié)果。這在圖12A和12B中示出。例如,假定圖10A的接口 "接 口 l"包括函數(shù)調(diào)用^"fl"(7"; 械;^ec/^ow, ot^w()(求平方),這是包括三個參數(shù) /"pW (輸入)、/^ec/Wo"(精度)和ow^ W (輸出),并且由第一代碼段向第二代 碼段發(fā)出的調(diào)用。如果中間參數(shù)/^ec/s/o"在給定的情形下無關(guān)緊要,如圖12A所 示,則它也可以被忽略或甚至由一無意義(在這一情況下)參數(shù)來替換。也可以添 加無關(guān)緊要的另外的參數(shù)。在任一情況下,只要在輸入由第二代碼段求平方之后返 回輸出,就可以達到求平方的功能。;^ec&'ow也有可能對計算系統(tǒng)的某一下游或其 它部分是極有意義的參數(shù);然而, 一旦認(rèn)識到; "c^/ow對計算平方這一有限目的 不是必需的,它就可以被替換或忽略。例如,代替?zhèn)鬟f一個有效的值, 而是在不對結(jié)果產(chǎn)生不利影響的情況下傳遞諸如出生日期等無意義的值。類似地, 如圖12B所示,接口Il由接口I1'替換,它被重定義來忽略或向接口添加參數(shù)。接 口I2可類似地被重定義為接口I2',它被重定義來忽略不必要的參數(shù),或可在別處 處理的參數(shù)。此處的要點是在某些情況下,編程接口可包括對某一目的而言所不需 要的方面,諸如參數(shù),因此可以忽略或重定義它們,或在別處為其它目的處理它們。 合并兩個分開的代碼模塊的一些或全部功能,使得它們之間的"接口"改變 形式也是可行的。例如,圖10A和10B的功能可以被分別轉(zhuǎn)化成圖13A和13B的 功能。在圖13A中,圖10B的先前的第一和第二代碼段被合并成包含兩者的模塊。 在這一情況下,該代碼段仍可以彼此通信,但是該接口可以適用于更適合單個模塊 的形式。由此,例如,正式的Call (調(diào)用)和Return (返回)語句將不再必需,但 是依照接口 "接口 1"的類似處理或響應(yīng)仍是有效的。類似地,如圖13B所示,圖 10B的部分(或全部)接口I2可以內(nèi)聯(lián)地寫入接口I1來形成接口I1"。如圖所示, 接口 12被劃分成I2a和I2b,并且接口部分I2a與接口 II內(nèi)聯(lián)地編寫代碼來形成接 口 11"。對于一個具體的示例,考慮圖10B的接口 II執(zhí)行一函數(shù)調(diào)用square(/np械 ow0W),它由接口I2接收,接口I2在由第二代碼段處理了隨/";n^傳遞的的值(對
32其求平方)之后,使用傳回已求平方的結(jié)果。在這一情況下,由第二代碼
段執(zhí)行的處理(對/H/7W求平方)可以由第一代碼段在不調(diào)用該接口的情況下執(zhí)行。
可以通過將通信分裂成多個離散的通信來間接地實現(xiàn)從一個代碼段到另一個
的通信。這在圖14A和14B中示意性地描述。如圖14A所示,提供了一個或多個 中間件(脫離接口 (Divorce Interface),因為它們從原始接口脫離功能和/或接口 函數(shù)),以轉(zhuǎn)化第一接口 "接口 1"上的通信,使得它們符合不同的接口,在本情 況下為"接口 2A"、"接口 2B"和"接口 2C"。這可以在這樣一種情況中完成, 例如,存在被設(shè)計成依照"接口 1"協(xié)議與如操作系統(tǒng)進行通信的應(yīng)用程序的已安 裝基礎(chǔ),但是然后該操作系統(tǒng)被改為使用不同的接口,在本情況下為接口 "接口 2A"、"接口 2B"和"接口 2C"。要點是改變了由第二代碼段使用的原始接口, 使得它不再與第一代碼段所使用的接口兼容,因此使用中介來令舊接口和新接口兼 容。類似地,如圖14B所示,可以使用脫離接口 DI1引入第三代碼段以從接口 II 接收通信,并使用脫離接口 DI2引入第三代碼段以向例如被重新設(shè)計成與DI2 — 起工作的接口 12a和I2b發(fā)送接口功能,但是提供相同的功能性結(jié)果。類似地,DI1 和DI2可以共同工作以將圖10B的接口 II和12的功能轉(zhuǎn)換到一新的操作系統(tǒng),而 提供相同或類似的功能性結(jié)果。
再一種可能的變型是動態(tài)地重寫代碼,以使用別的東西來替換接口功能,而 仍達到相同的總體結(jié)果。例如,可以有這樣一種系統(tǒng),其中,向執(zhí)行環(huán)境(如由.Net 框架提供的環(huán)境、Java運行時環(huán)境或其它類似的運行時型環(huán)境)中的即時 (Just-in-Time) (JIT)編譯器或解釋器提供了以中間語言(如Microsoft IL、 Java ByteCode等)呈現(xiàn)的代碼段??梢跃帉慗IT編譯器以動態(tài)地將通信從第一代碼段 轉(zhuǎn)換到第二代碼段,g卩,令它們符合第二代碼段(原始或不同的第二代碼段)可能 需要的不同接口。這在圖15A和15B中有描述。如圖15A中所看見的,這一方法 類似于上述的脫離情形。它可以在這樣一種情況下完成,例如,應(yīng)用程序的已安裝 基礎(chǔ)被設(shè)計成依照"接口 1"協(xié)議來與操作系統(tǒng)進行通信,但是然后該操作系統(tǒng)被 改為使用不同的接口。 JIT編譯器可以用于令來自已安裝基礎(chǔ)應(yīng)用程序的進行中的 通信符合操作系統(tǒng)的新接口。如圖15B所描述的,這一動態(tài)重寫接口的方法也可 應(yīng)用于動態(tài)地分解或者改變接口。
應(yīng)當(dāng)注意,通過替換實施例實現(xiàn)與接口相同或相似的結(jié)果的上述情形也可以 用各種方式串行地、并行地或與其它干預(yù)代碼組合。由此,上文呈現(xiàn)的替換實施例 并非互斥,并且可以被混合、匹配和組合以產(chǎn)生與圖IOA和10B中所呈現(xiàn)的一般情形相同或等效的情形。也應(yīng)當(dāng)注意,對于大多數(shù)編程構(gòu)造,可以有此處未描述的 實現(xiàn)接口的相同或相似功能的其它類似的方式,但是它們?nèi)杂杀景l(fā)明的精神和范圍 來表示,g卩,應(yīng)當(dāng)注意,它至少部分地是由作為接口的值的基礎(chǔ)的接口表示的功能 和由其啟用的有利結(jié)果。
如本領(lǐng)域技術(shù)人員所意識到的,具有包含用于控制計算機系統(tǒng)的指令的相關(guān) 聯(lián)的計算機可讀介質(zhì)的計算機系統(tǒng)可用于實現(xiàn)在此公開的示例性實施例。計算機系
統(tǒng)可包括至少一個計算機,如微處理器、數(shù)字信號處理器以及相關(guān)聯(lián)的外圍電子電 路。
盡管已經(jīng)用專用于結(jié)構(gòu)特征和/或方法動作的語言描述了本主題,但要理解, 所附權(quán)利要求書中定義的主題不必限于上述特定特征或動作。相反,上述特定特征 和動作是作為實現(xiàn)權(quán)利要求書的示例形式而被公開的。
權(quán)利要求
1.一種第一計算機中的其上存儲有計算機可執(zhí)行指令的計算機可讀介質(zhì),所述指令被配置為執(zhí)行包括以下步驟的方法(a)使所述第一計算機加入一非受管安全工作組;(b)將與所述第一計算機相關(guān)聯(lián)的第一帳戶信息提供給第二計算機用于復(fù)制,所述第二計算機是所述非受管安全工作組的成員;(c)獲得與所述第二計算機相關(guān)聯(lián)的第二帳戶信息;以及(d)復(fù)制所述第二帳戶信息。
2. 如權(quán)利要求l所述的計算機可讀介質(zhì),其特征在于,還具有執(zhí)行以下步驟的計算機可執(zhí)行指令(e) 確定所述第一帳戶信息的變化已經(jīng)發(fā)生;以及(f) 將所述變化提供給作為所述非受管安全工作組的成員的每個其它計算機。
3. 如權(quán)利要求2所述的計算機可讀介質(zhì),其特征在于,(f)包括執(zhí)行以下步驟的計算機可執(zhí)行指令①(1)向所述每個其它計算機通告所述變化。
4. 如權(quán)利要求3所述的計算機可讀介質(zhì),其特征在于,(f)包括執(zhí)行以下步驟的計算機可執(zhí)行指令(f)(2)從所述第二計算機接收帳戶版本信息;以及(f)(3)響應(yīng)于(f)(2),發(fā)送較新的用戶帳戶的列表。
5. 如權(quán)利要求3所述的計算機可讀介質(zhì),其特征在于,(f)包括執(zhí)行以下步驟的計算機可執(zhí)行指令-(f)(2)從所述第二計算機接收對用戶帳戶的列表的第一請求;以及(f)(3)響應(yīng)于(f)(2),將所述用戶帳戶的列表連同相應(yīng)的信息一起發(fā)送給所述第二計算機,(f)(4)從所述第二計算機接收對一指定用戶帳戶的相關(guān)聯(lián)帳戶信息的第二請求;以及(f)(5)響應(yīng)于(f)(4),將所述相關(guān)聯(lián)帳戶信息發(fā)送給所述第二計算機。
6. 如權(quán)利要求5所述的計算機可讀介質(zhì),其特征在于,所述指定用戶帳戶的至少一個屬性已經(jīng)被修改。
7. 如權(quán)利要求5所述的計算機可讀介質(zhì),其特征在于,所述指定用戶帳戶已經(jīng)被添加到所述第一帳戶信息。
8. 如權(quán)利要求1所述計算機可讀介質(zhì),其特征在于,還具有執(zhí)行以下步驟的計算機可執(zhí)行指令(e) 確定相關(guān)聯(lián)帳戶信息的變化已經(jīng)在除所述第一計算機以外的作為所述非受管安全工作組的成員的其它計算機上發(fā)生;(f) 從除所述第一計算機以外的計算機獲得指定帳戶信息;以及(g) 自動在所述第一計算機與除所述第一計算機以外的計算機之間同步所述指定帳戶信息。
9. 如權(quán)利要求8所述的計算機可讀介質(zhì),其特征在于,(g)包括執(zhí)行以下步驟的計算機可執(zhí)行指令(g)(l)檢測是否存在與所述指定帳戶信息的沖突;(g)(2)解決檢測到的沖突;(g)(3)用所述指定帳戶信息更新用戶帳戶數(shù)據(jù)結(jié)構(gòu);以及(g)(4)向所述非受管安全工作組的其它成員發(fā)布經(jīng)解決的沖突。
10. 如權(quán)利要求8所述的計算機可讀介質(zhì),其特征在于,(e)包括執(zhí)行以下步驟的計算機可執(zhí)行指令(e) (l)從除所述第一計算機以外的計算機接收通告。
11. 如權(quán)利要求8所述的計算機可讀介質(zhì),其特征在于,(f)包括執(zhí)行以下步驟的計算機可執(zhí)行指令-(f) (l)響應(yīng)于(d),請求除所述第一計算機以外的所述計算機提供根據(jù)版本信息的用戶帳戶列表。
12. 如權(quán)利要求ll所述的計算機可讀介質(zhì),其特征在于,(f)包括執(zhí)行以下步驟的計算機可執(zhí)行指令0)(2)從除所述第一計算機以外的所述計算機接收具有較新的用戶帳戶的列表。
13. 如權(quán)利要求2所述的計算機可讀介質(zhì),其特征在于,刪除所述第一帳戶信息。
14. 一種支持非受管安全工作組的計算機系統(tǒng),所述計算機系統(tǒng)包括安全組服務(wù)模塊,它處理所述非受管安全工作組的創(chuàng)建、加入和操作;以及應(yīng)用程序接口 (API)模塊,它允許應(yīng)用程序獲得有關(guān)計算機網(wǎng)絡(luò)中的非受管安全工作組的信息、創(chuàng)建所述非受管安全工作組、加入所述非受管安全工作組、以 及離開所述非受管安全工作組。
15. 如權(quán)利要求14的計算機系統(tǒng),其特征在于,所述應(yīng)用程序接口模塊通過 查詢所述安全組服務(wù)模塊來向所述應(yīng)用程序提供計算機網(wǎng)絡(luò)內(nèi)的非受管安全工作 組和無聯(lián)系計算機的列表。
16. 如權(quán)利要求14所述的計算機系統(tǒng),其特征在于,所述應(yīng)用程序模塊通過查詢所述安全組服務(wù)模塊來向所述應(yīng)用程序提供有關(guān)選定的非受管安全工作組的 信息,所述信息包括所述選定的非受管工作組的屬性和所述選定的非受管工作組的 成員計算機列表。
17. 如權(quán)利要求14所述的計算機系統(tǒng),其特征在于,所述應(yīng)用程序模塊通過查詢所述安全組服務(wù)模塊來向所述應(yīng)用程序提供有關(guān)非受管安全工作組內(nèi)的計算 機的信息。
18. 如權(quán)利要求14所述的計算機系統(tǒng),其特征在于,所述應(yīng)用程序模塊通過 指示所述安全組服務(wù)模塊來允許由所述應(yīng)用程序在所述計算機網(wǎng)絡(luò)內(nèi)創(chuàng)建新的非 受管工作組。
19. 如權(quán)利要求14所述的計算機系統(tǒng),其特征在于,所述應(yīng)用程序模塊通過指示所述安全組服務(wù)模塊來允許由所述應(yīng)用程序使所述計算機系統(tǒng)加入或離開所 述計算機網(wǎng)絡(luò)中的非受管工作組。
20. —種第一計算機中的其上存儲有計算機可執(zhí)行指令的計算機可讀介質(zhì), 所述指令被配置為執(zhí)行包括以下步驟的方法.-(a) 將自簽名證書發(fā)送給第二計算機,以建立所述第一計算機的相關(guān)聯(lián)帳戶, 其中所述第二計算機是一非受管安全工作組的成員,并且所述第一計算機不是所述 非受管安全工作組的成員;(b) 存儲所述第二計算機的相關(guān)聯(lián)證書、共享秘密和所述非受管安全工作組的 復(fù)制的證書;(c) 在所述第一計算機上創(chuàng)建所述第二計算機的相應(yīng)帳戶;(d) 廣播所述第一計算機是所述非受管安全工作組的工作組成員;以及(e) 與所述第二計算機同步帳戶信息。
全文摘要
一種在沒有服務(wù)器的情況下支持非受管安全工作組以便在組中的計算機之間進行公共用戶訪問與安全資源共享的平臺。用戶帳戶通過在非受管安全工作組的每個計算機上復(fù)制和修改帳戶得到同步。一計算機向非受管安全工作組中的其它計算機通告帳戶信息的變化。如果非受管安全工作組中的計算機之一確定該變化沒有反映在當(dāng)前的帳戶信息中,則該計算機向發(fā)出通告的計算機請求經(jīng)更新的帳戶信息。在同步非受管安全工作組中的用戶帳戶之前,解決不同計算機上的用戶帳戶之間的任何沖突。而且,一應(yīng)用程序接口(API)允許應(yīng)用程序查詢網(wǎng)絡(luò)化計算機系統(tǒng)與非受管安全工作組的屬性,以及加入非受管安全工作組。
文檔編號G06F15/16GK101495986SQ200680025305
公開日2009年7月29日 申請日期2006年7月10日 優(yōu)先權(quán)日2005年7月12日
發(fā)明者A·K·雅達夫, C·古扎克, G·E·范德伯格特, J·布里扎克, M·薩姆基, N·J·托馬瑟里 申請人:微軟公司