專利名稱:在發(fā)布和定制引擎中引入加密、認(rèn)證和授權(quán)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電氣、電子和計(jì)算機(jī)領(lǐng)域,更具體地,涉及安全特征等。
背景技術(shù):
發(fā)布/定制是關(guān)于主題組織數(shù)據(jù),使得發(fā)布者關(guān)于主題發(fā)布并且而定制者定制他們所借助的方法。典型地,發(fā)布者關(guān)于主題發(fā)布的所有消息由對(duì)于該主題的所有定制者接收。在至少一些實(shí)例中,發(fā)布者和定制者不知曉彼此的身份,允許非常靈活的通信方式。專用于不同市場(chǎng)領(lǐng)域的當(dāng)前產(chǎn)品的范圍支持發(fā)布/定制(“pub/sub”)抽象化。具體地,國(guó)際商業(yè)機(jī)器公司、Armonk、NY、USA的WebSphere MQ(WSMQ)網(wǎng)絡(luò)通信軟件產(chǎn)品是一種支持豐富操作集(例如故障、事務(wù)語義化、和不可否認(rèn)性)的大型系統(tǒng),其適用于例如處理銀行事務(wù)的數(shù)據(jù)服務(wù)器中心。另一方面,MQ遙測(cè)傳輸(MQTT)是適用于低級(jí)設(shè)備上的輕量級(jí)pub/sub機(jī)制。在 MQTT中,客戶端(發(fā)布者或定制者)連接至代理(例如IBM MicroBroker軟件)。然后,代理支持pub/sub抽象化。MQTT支持pub/sub的“推”和“拉”模型。推模型如先前段落所述。 在拉模型中,發(fā)布者向命名的隊(duì)列發(fā)布,定制者從那些隊(duì)列明確地移除消息。在推模型中,0 至N個(gè)定制者可接收給定消息,而在拉模型中僅一個(gè)定制者接收。
發(fā)明內(nèi)容
本發(fā)明的原理提供在發(fā)布和定制引擎中引入加密、認(rèn)證和授權(quán)的技術(shù)。在一方面, 一種控制發(fā)布-定制引擎和多個(gè)客戶端之間的交互的示例性方法(可以是計(jì)算機(jī)實(shí)現(xiàn)的), 包括以下步驟部署多個(gè)協(xié)議棧,所述協(xié)議棧的每個(gè)包括多個(gè)可組合協(xié)議模塊,所述可組合協(xié)議模塊的每個(gè)實(shí)現(xiàn)通用接口。額外步驟包括檢測(cè)所述多個(gè)客戶端的第一給定客戶端希望連接至所述發(fā)布-定制引擎;以及確定所述多個(gè)客戶端的所述第一給定客戶端是否將以安全方式連接。響應(yīng)于確定所述多個(gè)客戶端的所述第一給定客戶端將以所述安全方式連接,額外步驟包括實(shí)例化所述多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧的加密實(shí)例,以實(shí)現(xiàn)所述安全連接。進(jìn)一步步驟包括認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端;以及授權(quán)所述多個(gè)客戶端的所述第一給定客戶端。本發(fā)明的一個(gè)或多個(gè)實(shí)施例或其元件可通過包括有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)產(chǎn)品的形式實(shí)現(xiàn),所述有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有執(zhí)行所指出的方法步驟的計(jì)算機(jī)可用程序代碼。此外,本發(fā)明的一個(gè)或多個(gè)實(shí)施例或其元件可通過一種裝置的形式實(shí)現(xiàn),所述裝置包括存儲(chǔ)器以及至少一個(gè)處理器,后者耦合至所述存儲(chǔ)器,并且可操作為執(zhí)行示例性方法步驟。此外,在另一方面,本發(fā)明的一個(gè)或多個(gè)實(shí)施例或其元件可通過用于執(zhí)行這里所述的一個(gè)或多個(gè)方法步驟的部件的形式實(shí)現(xiàn);所述部件可包括(i)硬件模塊(多個(gè)); (ii)軟件模塊(多個(gè));或(iii)硬件和軟件模塊的組合;(i)-(iii)中的任一個(gè)實(shí)現(xiàn)這里闡述的特定技術(shù),并且軟件模塊存儲(chǔ)在有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(或多個(gè)這樣的介質(zhì))中。本發(fā)明的一個(gè)或多個(gè)實(shí)施例可提供一個(gè)或多個(gè)隨后技術(shù)效果
·能夠動(dòng)態(tài)拒絕客戶端的關(guān)于給定主題的訪問權(quán)限,同時(shí)保存MQTT協(xié)議的語義;·能夠同時(shí)支持來自多個(gè)客戶端的多個(gè)不同認(rèn)證機(jī)制。根據(jù)結(jié)合附圖閱讀的示例性實(shí)施例的隨后具體實(shí)施方式
,本發(fā)明的這些和其他特征、方面和優(yōu)點(diǎn)將變得清楚。
圖1示出根據(jù)本發(fā)明一方面的可組合協(xié)議棧;圖2是根據(jù)本發(fā)明另一方面的動(dòng)態(tài)協(xié)議組合的流程圖;圖3示出根據(jù)本發(fā)明另一方面的使用層特定信息的認(rèn)證;圖4是根據(jù)本發(fā)明另一方面的基于層的認(rèn)證的流程圖;圖5是根據(jù)本發(fā)明另一方面的認(rèn)證機(jī)制的流程圖;圖6示出根據(jù)本發(fā)明另一方面通過去除消息本體保持消息流;圖7是根據(jù)本發(fā)明額外方面的非限制性示例性實(shí)施例的框圖;以及圖8示出在實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面和/或元素中使用的計(jì)算機(jī)系統(tǒng)。
具體實(shí)施例方式本發(fā)明的方面使得發(fā)布/定制機(jī)制的用戶能夠簡(jiǎn)單有效地被認(rèn)證和授權(quán)。這里將關(guān)于從主題讀和寫以描述推模型、以及從隊(duì)列讀和寫以描述拉模型來討論。主題和隊(duì)列在發(fā)布/定制引擎(這里還稱為代理)中被分級(jí)命名。輕量級(jí)pub/sub機(jī)制(例如MQTT)典型地被設(shè)計(jì)為在低端設(shè)備上運(yùn)行,從而他們不支持網(wǎng)絡(luò)通信軟件產(chǎn)品(例如WSMQ)的大范圍操作。在MQTIV3中,任何人可連接至代理, 并發(fā)布和/或定制任意主題。在MQTIV4中,在協(xié)議中引入密碼,但是MicroBroker軟件忽略他。這些事實(shí)是可通過本發(fā)明有利解決的情形的示例。通過非限制性實(shí)例,在低端設(shè)備上的輕量級(jí)機(jī)制的適用性方面,在可能存在幾百或幾千個(gè)設(shè)備的網(wǎng)絡(luò)(例如傳感器網(wǎng)絡(luò))中,可能無法在每個(gè)設(shè)備上存儲(chǔ)密碼或證書,因?yàn)檫@是一個(gè)很大的管理負(fù)擔(dān)。相反,可使用關(guān)于卡的MAC地址、用于與傳感器通信的時(shí)間延遲、或任意其他方面的信息來執(zhí)行認(rèn)證。本發(fā)明的方面實(shí)現(xiàn)了對(duì)于輕量級(jí)pub/sub機(jī)制的全方位安全特征;這樣的特征可有利地引入簡(jiǎn)單的pub/sub代理,而不影響效率。安全是涵蓋許多不同行為的大概念。加密確保第三方不能夠觀察在不受保護(hù)的信道之間承載的信息的內(nèi)容。認(rèn)證確保通信交流中的一方可將其自身識(shí)別為對(duì)于另一方是安全的。授權(quán)確保向被識(shí)別的一方授權(quán)以執(zhí)行特定操縱。一些應(yīng)用需要加密到達(dá)和來自代理的所有通信,認(rèn)證所有方,并且授權(quán)對(duì)于主題和隊(duì)列的讀和寫。這樣的特征如何引入輕量級(jí)發(fā)布和定制引擎(代理)的非限制性實(shí)例如下。加密確保加密的技術(shù)對(duì)于本領(lǐng)域技術(shù)人員本身是公知的。具體地,傳輸層安全/安全套接字層(TLS/SSL)協(xié)議廣泛用于Diffie-Hellman密鑰交換的實(shí)現(xiàn)。對(duì)于加密,本發(fā)明的方面解決了可激活和失活加密的技術(shù)。參照?qǐng)D1,代理102可用于安全和非安全模式下。后者更加有效,因?yàn)榧用苄枰?jì)算。本發(fā)明的一個(gè)或多個(gè)實(shí)施例采用可組合協(xié)議模塊,允許系統(tǒng)管理員確定應(yīng)何時(shí)和對(duì)于哪些客戶端使用加密。在這個(gè)模型下,協(xié)議棧中的不同層通過確保所有協(xié)議模塊實(shí)現(xiàn)相同接口而像小孩子的互鎖玩具塊一樣連接在一起,不管他們?cè)跅V惺鞘裁次恢谩_@樣通過將SSL模塊106與MQTT模塊108聯(lián)接實(shí)現(xiàn)一個(gè)或多個(gè)加密棧104 的簡(jiǎn)單組合,以及通過將TCP模塊112與MQTT 108聯(lián)接實(shí)現(xiàn)明文(非加密)棧110的簡(jiǎn)單組合。MQTT模塊108在兩種情況下相同。MQTT模塊是可組合協(xié)議模塊的非限制性實(shí)例。圖2示出如何動(dòng)態(tài)組合棧的流程圖200。協(xié)議棧通過逐個(gè)模塊解析來生成,直到棧完成。然后,對(duì)棧進(jìn)行部署,并準(zhǔn)備使用。當(dāng)新客戶端連接時(shí),基于全局安全設(shè)置實(shí)例化相應(yīng)棧。具體地,根據(jù)判斷框202和框204和206,不斷增加模塊,直到棧完成;然后,部署棧。 根據(jù)判斷框208,如果存在更多要完成的棧(“是”分支)則重復(fù)該處理。在框210,用戶連接,并且控制流向判斷框212,其中根據(jù)全局安全設(shè)置作出棧是否為安全的確定。如果安全 (“是”分支),則在框214中實(shí)例化安全棧,而如果非安全(“否”分支),則在框216中實(shí)例化非安全棧。認(rèn)證參照?qǐng)D3,在最簡(jiǎn)單的可能認(rèn)證機(jī)制中,從客戶端向代理發(fā)送密碼,并且如果他相應(yīng)于對(duì)于該客戶端記錄的密碼,則代理認(rèn)證客戶端。認(rèn)證客戶端的另一通用技術(shù)是通過使用僅客戶端擁有的可信實(shí)體簽名的證書。存在可認(rèn)證客戶端的許多不同方式,并且這些方式在不同環(huán)境中適用。由于可使用管理員定義的規(guī)則來組合實(shí)現(xiàn)認(rèn)證的多個(gè)不同技術(shù),考慮標(biāo)準(zhǔn)JAAS (Java認(rèn)證和授權(quán)系統(tǒng))。然而,JAAS并未定義聚集并使得認(rèn)證信息可用所借助的技術(shù)。在代理的環(huán)境下,定義可組合協(xié)議棧中的每級(jí)所依賴的通用身份對(duì)象330。向 JAAS認(rèn)證上下文332提供這個(gè)對(duì)象330。由此,例如,網(wǎng)絡(luò)層可識(shí)別客戶端的因特網(wǎng)協(xié)議 (IP)地址,聯(lián)系人層可給出拇指印、安全套接字層(SSL)給出所提供的證書,以及MQTT層給出密碼。這保留了棧的靈活性,同時(shí)允許例如“IP地址并非可信地址的那些客戶端必須提供要認(rèn)證的證書”的規(guī)則。圖4在流程圖400中示出如何聚集身份信息以及基于該信息隨后如何執(zhí)行認(rèn)證的處理。在框402,用戶連接,并將N初始化為0。在框404,在模塊N建立連接。在框406,提取模塊的身份信息。在判斷框408,確定是否達(dá)到模塊棧的頂部;如果否(“否”分支),在框410中遞增N,并返回至框404。相反,如果達(dá)到模塊棧的頂部(“是”分支),在框412中從庫提取認(rèn)證規(guī)則,并在框414基于規(guī)則的組和身份項(xiàng)目的組認(rèn)證。在判斷框416,確定用戶是否被認(rèn)證;如果是(“是”分支),根據(jù)框420允許訪問代理102 ;如果否(“否”分支), 根據(jù)框418斷開用戶。授權(quán)JAAS還提供授權(quán)機(jī)制,但是這不適用于代理102,因?yàn)樗跈?quán)客戶端執(zhí)行一段代碼。結(jié)果,代碼庫必須反應(yīng)不同的授權(quán)等級(jí)。這既不利于效率,也不利于代碼簡(jiǎn)易性。本發(fā)明的一個(gè)或多個(gè)實(shí)施例采用新穎性方案,其重用主題和隊(duì)列命名方案來定義對(duì)于客戶端的功能集。資源(隊(duì)列或主題)名稱分級(jí)構(gòu)成。這允許使用通配符操作。通配符僅可用于定制請(qǐng)求,因?yàn)闊o法在通配符上發(fā)布。例如,一個(gè)主題可以是Europe/Switzerland/Zurich,另一主題可以是Europe/ Switzerland/Geneva。定制Europe/Switzerland/#的訂戶將隨后接收關(guān)于瑞士任意城市的所有定制??啥x客戶端可執(zhí)行的4個(gè)基礎(chǔ)操作·向主題寫·從主題讀·向隊(duì)列寫·從隊(duì)列讀對(duì)于這些操作的每個(gè),將客戶端的功能定義為可能通配符名稱的集。因此,例如, 可對(duì)于客戶端給出針對(duì)Europe/#的讀訪問,但是針對(duì)Europe/Switzerland/#和Europe/ France/Paris 的寫訪問。圖5作為流程圖500示出基礎(chǔ)授權(quán)過程。依據(jù)客戶端具有的功能檢查該客戶端要關(guān)于資源執(zhí)行的操作。如果客戶端缺少執(zhí)行操作的功能,則授權(quán)失敗,并且不執(zhí)行操作。否則,客戶端將繼續(xù)。具體地,在框502,獲得操作標(biāo)識(shí)符ρ:,以確定客戶端要關(guān)于在框504 獲得的資源r:執(zhí)行什么操作。在框506和508中分別獲得用戶標(biāo)識(shí)符u:和環(huán)境e:。在框510中提取與客戶端相應(yīng)的功能集C,并且在判斷框512,作出期望操作標(biāo)識(shí)符ρ 、資源 r 、用戶u:、和環(huán)境e:是否包含在提取的客戶端的功能C中的確定。如果是(“是”分支),則授權(quán)成功,如框516所示,而如果否(“否”分支),則授權(quán)失敗,如框514。每次客戶端在代理中建立發(fā)布或定制權(quán)限時(shí),依據(jù)適當(dāng)操作的客戶端功能集來匹配所提供的名稱。提供的名稱應(yīng)該是在功能集中定義的樹集的分支。由于提供的名稱和功能集都可能是通配符,使用以下技術(shù),用偽碼表示
RliTURN False;遞歸描述該技術(shù),但是可通過使用棧強(qiáng)制性實(shí)現(xiàn)等同和更有效的版本。基于棧的方法允許在命名層級(jí)中具有20個(gè)等級(jí)的1,000, 000個(gè)不同功能,以匹配于在目標(biāo)架構(gòu)(例如低端服務(wù)器或個(gè)人計(jì)算機(jī)(PC))中小于Ims的20個(gè)等級(jí)名稱。在基于棧的方法中,“功能”和“名稱”都用于生成棧,在命名樹以及通配符中包含不同層。兩個(gè)棧都彈出,并且只要頭元素匹配,則處理繼續(xù)。該語義與遞歸調(diào)用相同,但是不使用遞歸。遞歸適于描述該處理,但是通常不是非常有效。在一些實(shí)例中,可能有必要偶然撤銷關(guān)于資源的功能??赡苁强蛻舳吮徽J(rèn)證,并在權(quán)限被撤銷之前訪問資源的情況。為了處理這樣的情況,在其功能從與代理交互開始以來改變和沒有改變的客戶端之間區(qū)分;沒有改變的客戶端使用正常協(xié)議棧,但是對(duì)于改變了的客戶端,動(dòng)態(tài)增加新模塊。這樣的模塊基于每個(gè)消息使用在偽碼中的上述技術(shù)檢查客戶端的功能集。
現(xiàn)在參照?qǐng)D6,MQTT具有不同的交互模式,其中一些需要對(duì)消息確收。MQTT協(xié)議沒有提供功能集。如果客戶端預(yù)期確收消息,則在與MQTT模塊的交互中簡(jiǎn)單地丟棄客戶端不再具有適當(dāng)權(quán)限的消息將引起問題。這可被解決,并非通過丟棄消息,而是簡(jiǎn)單地去除其有效載荷并將錯(cuò)誤標(biāo)志增加至報(bào)頭。然后,這樣消息的良好行為接收器預(yù)期從資源斷開。不佳行為接收器可不斷開,但是從這樣的操作沒有獲得好處。因此,如圖6所示,授權(quán)的發(fā)布者650向代理102提交具有本體654的發(fā)布消息652,代理102用發(fā)布確收656對(duì)其確收。 將具有本體654的消息652發(fā)送至授權(quán)的訂戶658,其返回確收656。將沒有本體654的消息652發(fā)送至非授權(quán)的訂戶660,其返回確收656。因此,本發(fā)明的一個(gè)或多個(gè)實(shí)施例采用可動(dòng)態(tài)組合協(xié)議模塊棧來實(shí)現(xiàn)消息系統(tǒng)中的安全性,從而1.協(xié)議模塊(不管他們的特征)具有通用接口,允許他們組合在一起以通過任意方式形成完整棧2.在配置時(shí)間決定可能棧的集3.系統(tǒng)基于安全性需求決定用于給定客戶端的最適合棧4. 一個(gè)棧具有加密傳輸層,其他棧不具有。在至少一些情形下,每個(gè)協(xié)議模塊向在連接建立時(shí)建立的實(shí)體提供關(guān)于遠(yuǎn)程客戶端的信息,包括1.發(fā)送者的MAC地址2.發(fā)送者的IP子網(wǎng)和端口3.發(fā)送者增加的證書4.發(fā)送者的密碼和用戶名此外,在一個(gè)或多個(gè)實(shí)施例中,將協(xié)議模塊提供的信息用作認(rèn)證處理的一部分。此外,在至少一些情況下,使用主題和/或隊(duì)列的名稱來建立功能集,其中使用名稱集向主題和/或隊(duì)列分配讀/寫訪問,從而在控制路徑中建立到命名的主題/隊(duì)列的連接的嘗試必須“匹配”相應(yīng)的功能集。優(yōu)選地,⑴功能集和(ii)命名的主題和/或隊(duì)列兩者可使用通配符。在一個(gè)或多個(gè)情形下,在撤銷了功能的客戶端的數(shù)據(jù)路徑中動(dòng)態(tài)增加新過濾器模塊,從而檢查每個(gè)消息以觀察他是否仍舊被授權(quán)。在客戶端的功能被縮減同時(shí)會(huì)話仍舊活動(dòng)時(shí),這有利地允許檢查基于每個(gè)消息被執(zhí)行。在至少一些情況下,過濾器去除消息的內(nèi)容,并增加錯(cuò)誤標(biāo)志以允許正常協(xié)議交互繼續(xù)。圖7以框圖形式示出根據(jù)本發(fā)明一方面的系統(tǒng)的優(yōu)選但非限制性實(shí)施例。安全 pub/sub客戶端7M和標(biāo)準(zhǔn)pub/sub客戶端756希望與pub/sub引擎102交互??蛻舳?754、756在網(wǎng)絡(luò)752上與通信管理器701交互。這樣的交互通過網(wǎng)絡(luò)層702來促進(jìn)。通信管理器701包括安全協(xié)議錨703、標(biāo)準(zhǔn)協(xié)議錨705、和協(xié)議棧定義的庫750。網(wǎng)絡(luò)層702將交互從安全客戶端7M路由至安全協(xié)議錨703,其從庫750提取適當(dāng)協(xié)議棧定義,以實(shí)例化安全客戶端棧104的實(shí)例。網(wǎng)絡(luò)層702還將交互從標(biāo)準(zhǔn)客戶端756路由至標(biāo)準(zhǔn)協(xié)議錨705,其從庫750提取適當(dāng)協(xié)議棧定義,以實(shí)例化標(biāo)準(zhǔn)客戶端棧110的實(shí)例。棧104、110包括如關(guān)于圖1所述的元件106、108、112。標(biāo)準(zhǔn)和安全客戶端對(duì)于引擎102的訪問通過安全代理登錄上下文704來控制,其包括認(rèn)證管理器706和授權(quán)管理器707。
根據(jù)這里的討論,可理解,一般地,本發(fā)明的一個(gè)方面是一種控制發(fā)布-定制引擎 102和多個(gè)客戶端(例如客戶端650、658、660、754、756)之間的交互的方法。所述方法包括以下步驟根據(jù)圖2的框202-208,部署多個(gè)協(xié)議棧。所述協(xié)議棧的每個(gè)包括多個(gè)可組合協(xié)議模塊108。所述可組合協(xié)議模塊的每個(gè)實(shí)現(xiàn)通用接口。這個(gè)步驟例如可使用圖7中的通信管理器701來執(zhí) 行。附加步驟包括如框210,檢測(cè)所述多個(gè)客戶端的第一給定客戶端希望連接至所述發(fā)布_定制引擎;以及如框212,確定所述多個(gè)客戶端的所述第一給定客戶端是否將以安全方式連接。這些步驟例如可使用圖7中的網(wǎng)絡(luò)層702來執(zhí)行。根據(jù)判斷框212的“是”分支,進(jìn)一步的步驟是響應(yīng)于確定所述多個(gè)客戶端的所述第一給定客戶端將以安全方式連接,實(shí)例化所述多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧(由棧 104之一表示)的加密實(shí)例,以實(shí)現(xiàn)所述安全連接。這個(gè)步驟例如可使用圖7中的安全協(xié)議錨703來執(zhí)行。進(jìn)一步的步驟包括認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端(例如, 關(guān)于圖3和4所述);以及授權(quán)所述多個(gè)客戶端的所述第一給定客戶端(例如,關(guān)于圖5所述)。這些步驟例如可使用圖7中的安全代理登錄上下文704來執(zhí)行。在一個(gè)或多個(gè)實(shí)例中,額外步驟包括檢測(cè)所述多個(gè)客戶端的第二給定客戶端希望連接至所述發(fā)布_定制引擎(重復(fù)框210)。進(jìn)一步的額外步驟可包括通過重復(fù)框 212,確定所述多個(gè)客戶端的所述第二給定客戶端是否將以所述安全方式連接;以及根據(jù)框 216,響應(yīng)于確定所述多個(gè)客戶端的所述第二給定客戶端并非將以所述安全方式連接(框 212的“否”分支),實(shí)例化所述多個(gè)協(xié)議棧的第二適當(dāng)協(xié)議棧的明文實(shí)例(由棧110之一表示),以實(shí)現(xiàn)所述非安全連接。步驟216例如可使用圖7中的標(biāo)準(zhǔn)協(xié)議錨705來執(zhí)行;重復(fù)的步驟可使用如上所述的相同模塊或框來執(zhí)行??烧J(rèn)證和授權(quán)所述多個(gè)客戶端的所述第二給定客戶端。優(yōu)選地,多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧的加密實(shí)例的實(shí)例化以實(shí)現(xiàn)安全連接包括使用通用接口在多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧中將安全套接字層(或類似)模塊106 與可組合協(xié)議模塊108聯(lián)接;以及多個(gè)協(xié)議棧的第二適當(dāng)協(xié)議棧的明文實(shí)例的實(shí)例化以實(shí)現(xiàn)非安全連接包括使用通用接口在多個(gè)協(xié)議棧的第二適當(dāng)協(xié)議棧中將傳送控制協(xié)議(或類似)模塊112與可組合協(xié)議模塊108聯(lián)接。這些步驟例如可使用圖7中的通信管理器 701來執(zhí)行。多個(gè)客戶端的第一給定客戶端的認(rèn)證可包括例如,如框402-410,提取在多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧的實(shí)例化的加密實(shí)例中對(duì)于可組合協(xié)議模塊的每個(gè)的身份信息;以及基于所提取的身份信息建立通用身份對(duì)象。這些步驟例如可使用圖7中的安全代理登錄上下文704來執(zhí)行。進(jìn)一步可能步驟包括向發(fā)布-定制引擎102 (例如其JAAS認(rèn)證上下文332)提供通用身份對(duì)象330 ;以及當(dāng)通用身份對(duì)象332匹配于適當(dāng)認(rèn)證規(guī)則時(shí),認(rèn)證多個(gè)客戶端的第一給定客戶端,如框412-420。這些步驟例如可使用圖7中的認(rèn)證管理器706 來執(zhí)行。再參照?qǐng)D5,根據(jù)框502-508,多個(gè)客戶端的第一給定客戶端可與用戶u 關(guān)聯(lián),u 是用戶標(biāo)識(shí)符。此外,多個(gè)客戶端的第一給定客戶端的授權(quán)可包括確定多個(gè)客戶端的第一給定客戶端希望執(zhí)行由P 指定的操作,P 是操作標(biāo)識(shí)符;以及確定期望操作在與資源r 相關(guān)的環(huán)境e 中執(zhí)行,r 是資源標(biāo)識(shí)符。在框510,額外可能步驟包括提取與多個(gè)客戶端的第一給定客戶端關(guān)聯(lián)的功能組C???12-516指示當(dāng)參數(shù)u 、r 、p 和e 包含于C中時(shí),授權(quán)多個(gè)客戶端的第一給定客戶端。資源標(biāo)識(shí)符r:可標(biāo)識(shí)例如主題和隊(duì)列之一。操作標(biāo)識(shí)符P 可標(biāo)識(shí)例如讀操作和寫操作之一。這些步驟例如可使用圖7中的授權(quán)管理器707 來執(zhí)行。在一些情 況下,返回圖6的描述,額外步驟包括檢測(cè),在授權(quán)多個(gè)客戶端的第一給定客戶端之后,多個(gè)客戶端660的第一給定客戶端對(duì)于與多個(gè)客戶端的第一給定客戶端關(guān)聯(lián)的功能組C具有改變。這例如可通過授權(quán)管理器707來執(zhí)行。當(dāng)(例如由授權(quán)管理器 707)檢測(cè)到多個(gè)客戶端的第一給定客戶端希望執(zhí)行所改變的功能組不允許的另一操作時(shí); 丟棄與不允許的操作關(guān)聯(lián)的消息652的有效載荷654,并將錯(cuò)誤標(biāo)志放置于與不允許的操作關(guān)聯(lián)的消息的報(bào)頭中。有效載荷例如可由MQTT協(xié)議模塊108來丟棄。示例性系統(tǒng)和制品的細(xì)節(jié)可采用各種技術(shù)、利用專用硬件、通用處理器、固件、軟件、或上述組合來實(shí)現(xiàn)本發(fā)明或其組件。本發(fā)明的一個(gè)或多個(gè)實(shí)施例、或其元件可通過包括計(jì)算機(jī)可用介質(zhì)的計(jì)算機(jī)成品的形式實(shí)現(xiàn),其具有用于之下所示方法步驟的計(jì)算機(jī)可用程序代碼。此外,本發(fā)明的一個(gè)或多個(gè)實(shí)施例、或其元件可通過包括存儲(chǔ)器和至少一個(gè)處理器的形式實(shí)現(xiàn),至少一個(gè)處處理器耦合至存儲(chǔ)器并且可操作為執(zhí)行示例性方法步驟。一個(gè)或多個(gè)實(shí)施例可利用在通用計(jì)算機(jī)或工作站上運(yùn)行的軟件。參照?qǐng)D8,這樣的實(shí)施方案可采用例如處理器802、存儲(chǔ)器804、和例如由顯示器806和鍵盤808形成的輸入 /輸出接口。這里使用的術(shù)語“處理器”用于包括任意處理設(shè)備,例如,包括CPU(中央處理單元)和/或其他形式的處理電路的設(shè)備。此外,術(shù)語“處理器”可表示多于一個(gè)獨(dú)立處理器。術(shù)語“存儲(chǔ)器”用于包括與處理器或CPU相關(guān)的存儲(chǔ)器,例如RAM(隨機(jī)存取存儲(chǔ)器)、 ROM (只讀存儲(chǔ)器)、固定存儲(chǔ)器設(shè)備(例如硬盤驅(qū)動(dòng)器)、可移除存儲(chǔ)器設(shè)備(例如盤)、閃速存儲(chǔ)器等。此外,這里使用的短語“輸入/輸出接口 ”用于包括例如向處理單元輸入數(shù)據(jù)的一個(gè)或多個(gè)機(jī)構(gòu)(例如鼠標(biāo))、以及用于提供與處理單元相關(guān)的結(jié)果的一個(gè)或多個(gè)機(jī)構(gòu) (例如打印機(jī))。處理器802、存儲(chǔ)器804、和輸入/輸出接口(例如顯示器806和鍵盤808) 可例如經(jīng)由總線810作為數(shù)據(jù)處理單元812的一部分互連。例如經(jīng)由總線810的適當(dāng)互連也可向網(wǎng)絡(luò)接口 814提供,例如網(wǎng)卡,其可被設(shè)置與計(jì)算機(jī)網(wǎng)絡(luò)對(duì)接,以及與媒體接口 816 對(duì)接,例如盤或⑶-ROM驅(qū)動(dòng)器,其可被設(shè)置與媒體818對(duì)接。因此,包括用于執(zhí)行這里所述的發(fā)明的方法的指令或代碼的計(jì)算機(jī)軟件可存儲(chǔ)在關(guān)聯(lián)存儲(chǔ)器設(shè)備的一個(gè)或多個(gè)(例如ROM、固定或可移除存儲(chǔ)器)上,并且當(dāng)準(zhǔn)備利用時(shí),可部分地或整體地加載(例如到RAM中)并由CPU執(zhí)行。這樣的軟件可包括但不限于,固件、 駐留軟件、微代碼等。此外,本發(fā)明可利用從計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)(例如媒體818)可訪問的計(jì)算機(jī)程序產(chǎn)品的形式,其提供計(jì)算機(jī)或任意指令執(zhí)行系統(tǒng)使用或與其關(guān)聯(lián)的程序代碼。為了這個(gè)說明的目的,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是指令執(zhí)行系統(tǒng)、裝置、或設(shè)備使用或與其關(guān)聯(lián)的任意裝置。介質(zhì)可存儲(chǔ)程序代碼,以執(zhí)行這里闡述的一個(gè)或多個(gè)方法步驟。介質(zhì)可以是電子、磁、光、電磁、紅外、或半導(dǎo)體系統(tǒng)(或裝置或設(shè)備)或傳播介質(zhì)。 有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的實(shí)例包括半導(dǎo)體或固態(tài)存儲(chǔ)器(例如存儲(chǔ)器804)、磁帶、可移除計(jì)算機(jī)盤(例如媒體818)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、固態(tài)磁盤和光盤 (但不包括傳播介質(zhì))。光盤的當(dāng)前實(shí)例包括壓縮盤只讀存儲(chǔ)器(CD-ROM)、壓縮盤-讀/寫(CD-R/W)禾口 DVD。適用于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)包括至少一個(gè)處理器802,其通過系統(tǒng)總線810直接或間接耦合至存儲(chǔ)器元件804的至少一個(gè)處理器802。存儲(chǔ)器元件可包括在程序代碼的實(shí)際執(zhí)行期間采用的本地存儲(chǔ)器、海量存儲(chǔ)裝置、和高速緩存存儲(chǔ)器,其提供至少一些程序代碼的臨時(shí)存儲(chǔ),以減少在執(zhí)行期間必須從海量存儲(chǔ)裝置提取代碼的次數(shù)。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤808、顯示器806、定點(diǎn)設(shè)備等)可直接(例如經(jīng)由總線810)或通過中間I/O控制器(為了簡(jiǎn)化省略)耦合至系統(tǒng)。網(wǎng)絡(luò)適配器(例如網(wǎng)絡(luò)接口 814)也可耦合至系統(tǒng),以使得數(shù)據(jù)處理系統(tǒng)能夠通過中間專用網(wǎng)絡(luò)或公共網(wǎng)絡(luò)耦合至其他數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是網(wǎng)絡(luò)適配器的幾個(gè)當(dāng)前可用類型。這里,包括權(quán)利要求,“服務(wù)器”包括運(yùn)行服務(wù)器程序的物理數(shù)據(jù)處理系統(tǒng)(例如圖 8所示的系統(tǒng)812)。應(yīng)理解,這樣的物理服務(wù)器可包括或不包括顯示器和鍵盤。用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序碼可以使用一種或多種程序語言的組合來撰寫,包括面向?qū)ο蟪绦蛘Z言(例如JaVa、Smalltalk、C++或其它類似者)以及傳統(tǒng)程序語言 (例如“C”程序語言或其它類似的程序語言)。程序代碼可以獨(dú)立軟件組的形式完整的于用戶的計(jì)算機(jī)上執(zhí)行或部分于用戶的計(jì)算機(jī)上執(zhí)行,或部分于用戶計(jì)算機(jī)而部分于遠(yuǎn)程計(jì)算機(jī),或者全部于遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后面的情況,遠(yuǎn)程計(jì)算機(jī)可以任何形式的網(wǎng)絡(luò)連接至用戶的計(jì)算機(jī),包括局域網(wǎng)絡(luò)(LAN)或廣域網(wǎng)絡(luò)(WAN),或者也可利用外部計(jì)算機(jī)來做連接(例如利用因特網(wǎng)服務(wù)提供商來連接至因特網(wǎng))。參照方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的實(shí)施例。當(dāng)可理解流程圖和/或框圖的每個(gè)方框、和流程圖和/或框圖的方框的組合可以使用計(jì)算機(jī)程序指令來實(shí)施。這些計(jì)算機(jī)程序指令可供通用型計(jì)算機(jī)、特殊計(jì)算機(jī)的處理器或其它可程序化數(shù)據(jù)處理裝置所組成的機(jī)器來執(zhí)行,而指令經(jīng)由計(jì)算機(jī)的處理器或其它可編程數(shù)據(jù)處理裝置執(zhí)行以便建立流程圖和/或方框圖或方框中所指定的功能/操作的部件。這些計(jì)算機(jī)程序指令也可被儲(chǔ)存在有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上,以便指示計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置來進(jìn)行特定的功能,而這些儲(chǔ)存在計(jì)算機(jī)可讀介質(zhì)上的指令構(gòu)成制成品,其內(nèi)包括的指令可實(shí)施流程圖和/或方框圖一個(gè)或多個(gè)方框中所指定的功能/ 操作。計(jì)算機(jī)程序指令也可被加載到計(jì)算機(jī)上或其它可編程數(shù)據(jù)處理裝置,以便于計(jì)算機(jī)或其它可編程裝置上進(jìn)行一系列要執(zhí)行的操作步驟,而在該計(jì)算機(jī)或其它可編程裝置上執(zhí)行該指令時(shí)提供用于達(dá)成流程圖和/或方框圖一個(gè)或多個(gè)方框中所指定的功能/操作。附圖中的流程圖和框圖示出根據(jù)本發(fā)明各個(gè)實(shí)施例的系統(tǒng)、方法、和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的架構(gòu)、功能、和操作。由此,流程圖或框圖中的每個(gè)框可表示包括用于實(shí)現(xiàn)特定邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令的模塊、段、或代碼部分。在一些實(shí)施例中,在框中提及的功能可并非按照附圖中提及的順序發(fā)生。例如,連續(xù)示出的兩個(gè)框可事實(shí)上基本同時(shí)執(zhí)行,或所述框有時(shí)候可按相反順序執(zhí)行,這取決于涉及的功能??驁D和/或流程圖的框的每個(gè)框、以及框圖和/或流程圖的框的組合可通過執(zhí)行特定功能或行為的基于專用硬件系統(tǒng)與專用硬件和計(jì)算機(jī)指令結(jié)合來實(shí)現(xiàn)。
此外,應(yīng)注意,這里所述的任意方法可包括額外步驟提供一種系統(tǒng),包括不同軟件模塊,所述不同軟件模塊的每個(gè)在有形計(jì)算機(jī)可讀可記錄存儲(chǔ)介質(zhì)上實(shí)現(xiàn),所述模塊可包括圖7所示的任意或所有組件(例如方框102、104、106、108、110、112、701-707、750 ;方框750可包括例如數(shù)據(jù)庫中的項(xiàng)目)。方法步驟可隨后使用硬件處理器上執(zhí)行的如上所述的系統(tǒng)的不同軟件模塊和/或子模塊來執(zhí)行。此外,計(jì)算機(jī)程序產(chǎn)品可包括有形計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有適用于被執(zhí)行以執(zhí)行這里所述的一個(gè)或多個(gè)方法步驟的代碼,包括向系統(tǒng)提供不同軟件模塊。在任意情況下,應(yīng)理解,這里所示的組件可在硬件、軟件、或其組合的任意形式下實(shí)現(xiàn);例如,專用集成電路(ASICS)、功能電路、具有相關(guān)存儲(chǔ)器的一個(gè)或多個(gè)適當(dāng)編程的通用數(shù)字計(jì)算機(jī)等??紤]到這里提供的本發(fā)明的教導(dǎo),本領(lǐng)域技術(shù)人員將能夠設(shè)想到本發(fā)明的組件的其他實(shí)現(xiàn)方案。將認(rèn)識(shí)到并且應(yīng)理解,上述本發(fā)明的示例性實(shí)施例可通過多種不同方式實(shí)現(xiàn)??紤]到這里提供的本發(fā)明的教導(dǎo),本領(lǐng)域技術(shù)人員將能夠設(shè)想到本發(fā)明的組件的其他實(shí)現(xiàn)方案。當(dāng)然,盡管這里參照附圖描述了本發(fā)明的示例性實(shí)施例,但是可理解,本發(fā)明不限于這些精確實(shí)施例,并且在不脫離本發(fā)明的范圍或精神的情況下,本領(lǐng)域技術(shù)人員可進(jìn)行各種其他改變和修改。
權(quán)利要求
1.一種控制發(fā)布-定制引擎和多個(gè)客戶端之間的交互的方法,所述方法包括以下步驟部署多個(gè)協(xié)議棧,所述協(xié)議棧的每個(gè)包括多個(gè)可組合協(xié)議模塊,所述可組合協(xié)議模塊的每個(gè)實(shí)現(xiàn)通用接口;檢測(cè)所述多個(gè)客戶端的第一給定客戶端希望連接至所述發(fā)布-定制引擎; 確定所述多個(gè)客戶端的所述第一給定客戶端是否將以安全方式連接; 響應(yīng)于確定所述多個(gè)客戶端的所述第一給定客戶端將以所述安全方式連接,實(shí)例化所述多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧的加密實(shí)例,以實(shí)現(xiàn)所述安全連接; 認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端;以及授權(quán)所述多個(gè)客戶端的所述第一給定客戶端。
2.如權(quán)利要求1所述的方法,還包括檢測(cè)所述多個(gè)客戶端的第二給定客戶端希望連接至所述發(fā)布-定制引擎; 確定所述多個(gè)客戶端的所述第二給定客戶端是否將以所述安全方式連接; 響應(yīng)于確定所述多個(gè)客戶端的所述第二給定客戶端并非將以所述安全方式連接,實(shí)例化所述多個(gè)協(xié)議棧的第二適當(dāng)協(xié)議棧的明文實(shí)例,以實(shí)現(xiàn)所述非安全連接; 認(rèn)證所述多個(gè)客戶端的所述第二給定客戶端;以及授權(quán)所述多個(gè)客戶端的所述第二給定客戶端。
3.如權(quán)利要求2所述的方法,還包括提供一種系統(tǒng),其中所述系統(tǒng)包括不同軟件模塊,所述不同軟件模塊的每個(gè)在有形計(jì)算機(jī)可讀可記錄存儲(chǔ)介質(zhì)上實(shí)現(xiàn),以及其中所述不同軟件模塊包括通信管理器模塊、網(wǎng)絡(luò)層模塊、安全協(xié)議錨模塊、標(biāo)準(zhǔn)協(xié)議錨模塊、和安全代理登錄上下文模塊; 其中所述多個(gè)協(xié)議棧的所述部署通過在硬件處理器上執(zhí)行的所述通信管理器模塊來執(zhí)行;所述檢測(cè)所述多個(gè)客戶端的所述第一和第二給定客戶端希望連接至所述發(fā)布-定制弓I擎通過在所述硬件處理器上執(zhí)行的所述網(wǎng)絡(luò)層模塊來執(zhí)行;所述確定所述多個(gè)客戶端的所述第一和第二給定客戶端是否將以所述安全方式連接通過在所述硬件處理器上執(zhí)行的所述網(wǎng)絡(luò)層模塊來執(zhí)行;所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述加密實(shí)例的所述實(shí)例化通過在所述硬件處理器上執(zhí)行的所述安全協(xié)議錨模塊來執(zhí)行;所述多個(gè)客戶端的所述第一和第二給定客戶端的所述認(rèn)證通過在所述硬件處理器上執(zhí)行的所述安全代理登錄上下文模塊來執(zhí)行;所述多個(gè)客戶端的所述第一和第二給定客戶端的所述授權(quán)通過在所述硬件處理器上執(zhí)行的所述安全代理登錄上下文模塊來執(zhí)行;以及所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧的所述明文實(shí)例的所述實(shí)例化通過在所述硬件處理器上執(zhí)行的所述標(biāo)準(zhǔn)協(xié)議錨模塊來執(zhí)行。
4.如權(quán)利要求3所述的方法,其中所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述加密實(shí)例的所述實(shí)例化以實(shí)現(xiàn)所述安全連接包括在所述硬件處理器上執(zhí)行的所述通信管理器模塊使用所述通用接口在所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧中將安全套接字層模塊與所述可組合協(xié)議模塊聯(lián)接;以及所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧的所述明文實(shí)例的所述實(shí)例化以實(shí)現(xiàn)所述非安全連接包括在所述硬件處理器上執(zhí)行的所述通信管理器模塊使用所述通用接口在所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧中將傳送控制協(xié)議模塊與所述可組合協(xié)議模塊聯(lián)接。
5.如權(quán)利要求3所述的方法,其中所述不同軟件模塊還包括認(rèn)證管理器模塊,所述認(rèn)證管理器模塊是所述安全代理登錄上下文模塊的一部分,以及其中所述多個(gè)客戶端的所述第一給定客戶端的所述認(rèn)證包括使用在所述硬件處理器上執(zhí)行的所述安全代理登錄上下文模塊提取在所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述實(shí)例化的加密實(shí)例中對(duì)于所述可組合協(xié)議模塊的每個(gè)的身份信息;使用在所述硬件處理器上執(zhí)行的所述安全代理登錄上下文模塊,基于所提取的身份信息建立通用身份對(duì)象;使用在所述硬件處理器上執(zhí)行的所述認(rèn)證管理器模塊向所述發(fā)布-定制引擎提供所述通用身份對(duì)象;以及當(dāng)所述通用身份對(duì)象匹配于適當(dāng)認(rèn)證規(guī)則時(shí),使用在所述硬件處理器上執(zhí)行的所述認(rèn)證管理器模塊認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端。
6.如權(quán)利要求3所述的方法,其中所述不同軟件模塊還包括授權(quán)管理器模塊,所述授權(quán)管理器模塊是所述安全代理登錄上下文模塊的一部分,以及其中所述多個(gè)客戶端的所述第一給定客戶端與用戶u 關(guān)聯(lián),u 是用戶標(biāo)識(shí)符;以及所述多個(gè)客戶端的所述第一給定客戶端的所述授權(quán)包括通過在所述硬件處理器上執(zhí)行的所述授權(quán)管理器模塊執(zhí)行以下子步驟確定所述多個(gè)客戶端的所述第一給定客戶端希望執(zhí)行由P 指定的操作,P 是操作標(biāo)識(shí)符;確定期望所述操作在與資源r 相關(guān)的環(huán)境e 中執(zhí)行,r 是資源標(biāo)識(shí)符;提取與所述多個(gè)客戶端的所述第一給定客戶端關(guān)聯(lián)的功能組C ;以及當(dāng)所述參數(shù)u:、!·、ρ:和e:包含于C中時(shí),授權(quán)所述多個(gè)客戶端的所述第一給定客戶端。
7.如權(quán)利要求6所述的方法,其中所述資源標(biāo)識(shí)符r標(biāo)識(shí)主題和隊(duì)列之一。
8.如權(quán)利要求6所述的方法,其中所述操作標(biāo)識(shí)符ρ標(biāo)識(shí)讀操作和寫操作之一。
9.如權(quán)利要求6所述的方法,還包括通過在所述硬件處理器上執(zhí)行的所述授權(quán)管理器模塊檢測(cè),在所述多個(gè)客戶端的所述第一給定客戶端的所述授權(quán)之后,所述多個(gè)客戶端的所述第一給定客戶端對(duì)于與所述多個(gè)客戶端的所述第一給定客戶端關(guān)聯(lián)的所述功能組C具有改變;通過在所述硬件處理器上執(zhí)行的所述授權(quán)管理器模塊檢測(cè),所述多個(gè)客戶端的所述第一給定客戶端希望執(zhí)行所改變的功能組不允許的另一操作;以及響應(yīng)于檢測(cè)到所述多個(gè)客戶端的所述第一給定客戶端希望執(zhí)行所述不允許的操作,通過所述可組合協(xié)議模塊的所述給定可組合協(xié)議模塊丟棄與所述不允許的操作關(guān)聯(lián)的消息的有效載荷,并將錯(cuò)誤標(biāo)志放置于與所述不允許的操作關(guān)聯(lián)的所述消息的報(bào)頭中。
10.如權(quán)利要求3所述的方法,其中所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述加密實(shí)例的所述實(shí)例化以實(shí)現(xiàn)所述安全連接包括在所述硬件處理器上執(zhí)行的所述通信管理器模塊使用所述通用接口在所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧中將安全套接字層模塊與所述可組合協(xié)議模塊聯(lián)接;以及所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧的所述明文實(shí)例的所述實(shí)例化以實(shí)現(xiàn)所述非安全連接包括在所述硬件處理器上執(zhí)行的所述通信管理器模塊使用所述通用接口在所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧中將傳送控制協(xié)議模塊與所述可組合協(xié)議模塊聯(lián)接;所述不同軟件模塊還包括認(rèn)證管理器模塊,所述認(rèn)證管理器模塊是所述安全代理登錄上下文模塊的一部分,所述多個(gè)客戶端的所述第一給定客戶端的所述認(rèn)證包括使用在所述硬件處理器上執(zhí)行的所述安全代理登錄上下文模塊提取在所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述實(shí)例化的加密實(shí)例中對(duì)于所述可組合協(xié)議模塊的每個(gè)的身份信息;使用在所述硬件處理器上執(zhí)行的所述安全代理登錄上下文模塊,基于所提取的身份信息建立通用身份對(duì)象;使用在所述硬件處理器上執(zhí)行的所述認(rèn)證管理器模塊向所述發(fā)布-定制引擎提供所述通用身份對(duì)象;以及當(dāng)所述通用身份對(duì)象匹配于適當(dāng)認(rèn)證規(guī)則時(shí),使用在所述硬件處理器上執(zhí)行的所述認(rèn)證管理器模塊認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端;所述不同軟件模塊還包括授權(quán)管理器模塊,所述授權(quán)管理器模塊是所述安全代理登錄上下文模塊的一部分;所述多個(gè)客戶端的所述第一給定客戶端與用戶u 關(guān)聯(lián),u 是用戶標(biāo)識(shí)符;以及所述多個(gè)客戶端的所述第一給定客戶端的所述授權(quán)包括通過在所述硬件處理器上執(zhí)行的所述授權(quán)管理器模塊執(zhí)行以下子步驟確定所述多個(gè)客戶端的所述第一給定客戶端希望執(zhí)行由P 指定的操作,P 是操作標(biāo)識(shí)符;確定期望所述操作在與資源r 相關(guān)的環(huán)境e 中執(zhí)行,r 是資源標(biāo)識(shí)符;提取與所述多個(gè)客戶端的所述第一給定客戶端關(guān)聯(lián)的功能組C ;以及當(dāng)所述參數(shù)u :r· 、ρ 和e 包含于C中時(shí),授權(quán)所述多個(gè)客戶端的所述第一給定客戶端。
11. 一種包括有形計(jì)算機(jī)可讀可記錄存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述有形計(jì)算機(jī)可讀可記錄存儲(chǔ)介質(zhì)包括控制發(fā)布-定制引擎和多個(gè)客戶端之間的交互的計(jì)算機(jī)可用程序代碼,所述計(jì)算機(jī)程序產(chǎn)品包括部署多個(gè)協(xié)議棧的計(jì)算機(jī)可用程序代碼,所述協(xié)議棧的每個(gè)包括多個(gè)可組合協(xié)議模塊,所述可組合協(xié)議模塊的每個(gè)實(shí)現(xiàn)通用接口 ;檢測(cè)所述多個(gè)客戶端的第一給定客戶端希望連接至所述發(fā)布-定制引擎的計(jì)算機(jī)可用程序代碼;確定所述多個(gè)客戶端的所述第一給定客戶端是否將以安全方式連接的計(jì)算機(jī)可用程序代碼;響應(yīng)于確定所述多個(gè)客戶端的所述第一給定客戶端將以所述安全方式連接,實(shí)例化所述多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧的加密實(shí)例,以實(shí)現(xiàn)所述安全連接的計(jì)算機(jī)可用程序代碼;認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端的計(jì)算機(jī)可用程序代碼;以及授權(quán)所述多個(gè)客戶端的所述第一給定客戶端的計(jì)算機(jī)可用程序代碼。
12.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,還包括檢測(cè)所述多個(gè)客戶端的第二給定客戶端希望連接至所述發(fā)布-定制引擎的計(jì)算機(jī)可用程序代碼;確定所述多個(gè)客戶端的所述第二給定客戶端是否將以所述安全方式連接的計(jì)算機(jī)可用程序代碼;響應(yīng)于確定所述多個(gè)客戶端的所述第二給定客戶端并非將以所述安全方式連接,實(shí)例化所述多個(gè)協(xié)議棧的第二適當(dāng)協(xié)議棧的明文實(shí)例,以實(shí)現(xiàn)所述非安全連接的計(jì)算機(jī)可用程序代碼;認(rèn)證所述多個(gè)客戶端的所述第二給定客戶端的計(jì)算機(jī)可用程序代碼;以及授權(quán)所述多個(gè)客戶端的所述第二給定客戶端的計(jì)算機(jī)可用程序代碼。
13.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其中控制發(fā)布-定制引擎和所述多個(gè)客戶端之間的交互的所述計(jì)算機(jī)可用程序代碼包括不同軟件模塊,所述不同軟件模塊的每個(gè)在有形計(jì)算機(jī)可讀可記錄存儲(chǔ)介質(zhì)上實(shí)現(xiàn),以及其中所述不同軟件模塊包括通信管理器模塊、網(wǎng)絡(luò)層模塊、安全協(xié)議錨模塊、標(biāo)準(zhǔn)協(xié)議錨模塊、和安全代理登錄上下文模塊;其中所述通信管理器模塊包括部署所述多個(gè)協(xié)議棧的所述計(jì)算機(jī)可用程序代碼; 所述網(wǎng)絡(luò)層模塊包括檢測(cè)所述多個(gè)客戶端的所述第一和第二給定客戶端希望連接至所述發(fā)布-定制引擎的所述計(jì)算機(jī)可用程序代碼,以及確定所述多個(gè)客戶端的所述第一和第二給定客戶端是否將以所述安全方式連接的所述計(jì)算機(jī)可用程序代碼;所述安全協(xié)議錨模塊包括實(shí)例化所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述加密實(shí)例的所述計(jì)算機(jī)可用程序代碼;所述安全代理登錄上下文模塊包括所述多個(gè)客戶端的所述第一和第二給定客戶端的認(rèn)證的所述計(jì)算機(jī)可用程序代碼,以及所述多個(gè)客戶端的所述第一和第二給定客戶端的授權(quán)的所述計(jì)算機(jī)可用程序代碼;以及所述標(biāo)準(zhǔn)協(xié)議錨模塊包括實(shí)例化所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧的所述明文實(shí)例的所述計(jì)算機(jī)可用程序代碼。
14.如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中實(shí)例化所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述加密實(shí)例的所述計(jì)算機(jī)可用程序代碼包括使用所述通用接口在所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧中將安全套接字層模塊與所述可組合協(xié)議模塊聯(lián)接的計(jì)算機(jī)可用程序代碼;以及實(shí)例化所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧的所述明文實(shí)例以實(shí)現(xiàn)所述非安全連接包括使用所述通用接口在所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧中將傳送控制協(xié)議模塊與所述可組合協(xié)議模塊聯(lián)接的計(jì)算機(jī)可用程序代碼。
15.如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中所述不同軟件模塊還包括認(rèn)證管理器模塊,所述認(rèn)證管理器模塊是所述安全代理登錄上下文模塊的一部分;以及授權(quán)管理器模塊,所述授權(quán)管理器模塊是所述安全代理登錄上下文模塊的一部分;以及其中所述多個(gè)客戶端的所述第一給定客戶端的認(rèn)證的所述計(jì)算機(jī)可用程序代碼包括 提取在所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述實(shí)例化的加密實(shí)例中對(duì)于所述可組合協(xié)議模塊的每個(gè)的身份信息的計(jì)算機(jī)可用程序代碼;基于所提取的身份信息建立通用身份對(duì)象的計(jì)算機(jī)可用程序代碼;以及所述認(rèn)證管理器模塊,所述認(rèn)證管理器模塊包括 向所述發(fā)布-定制引擎提供所述通用身份對(duì)象的計(jì)算機(jī)可用程序代碼; 當(dāng)所述通用身份對(duì)象匹配于適當(dāng)認(rèn)證規(guī)則時(shí),認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端的計(jì)算機(jī)可用程序代碼;所述多個(gè)客戶端的所述第一給定客戶端與用戶u 關(guān)聯(lián),u 是用戶標(biāo)識(shí)符;以及所述授權(quán)管理器模塊包括授權(quán)所述多個(gè)客戶端的所述第一給定客戶端的所述計(jì)算機(jī)可用程序代碼,所述授權(quán)管理器模塊包括確定所述多個(gè)客戶端的所述第一給定客戶端希望執(zhí)行由P 指定的操作的計(jì)算機(jī)可用程序代碼,P 是操作標(biāo)識(shí)符;確定期望所述操作在與資源r 相關(guān)的環(huán)境e 中執(zhí)行的計(jì)算機(jī)可用程序代碼,r 是資源標(biāo)識(shí)符;提取與所述多個(gè)客戶端的所述第一給定客戶端關(guān)聯(lián)的功能組C的計(jì)算機(jī)可用程序代碼;以及當(dāng)所述參數(shù)、!·、ρ:和e:包含于C中時(shí),授權(quán)所述多個(gè)客戶端的所述第一給定客戶端的計(jì)算機(jī)可用程序代碼。
16.一種控制發(fā)布-定制引擎和多個(gè)客戶端之間的交互的裝置,所述裝置包括 存儲(chǔ)器;以及至少一個(gè)處理器,耦合至所述存儲(chǔ)器,以及可操作為部署多個(gè)協(xié)議棧,所述協(xié)議棧的每個(gè)包括多個(gè)可組合協(xié)議模塊,所述可組合協(xié)議模塊的每個(gè)實(shí)現(xiàn)通用接口;檢測(cè)所述多個(gè)客戶端的第一給定客戶端希望連接至所述發(fā)布-定制引擎; 確定所述多個(gè)客戶端的所述第一給定客戶端是否將以安全方式連接; 響應(yīng)于確定所述多個(gè)客戶端的所述第一給定客戶端將以所述安全方式連接,實(shí)例化所述多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧的加密實(shí)例,以實(shí)現(xiàn)所述安全連接; 認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端;以及授權(quán)所述多個(gè)客戶端的所述第一給定客戶端。
17.如權(quán)利要求16所述的裝置,其中所述至少一個(gè)處理器還可操作為 檢測(cè)所述多個(gè)客戶端的第二給定客戶端希望連接至所述發(fā)布-定制引擎; 確定所述多個(gè)客戶端的所述第二給定客戶端是否將以所述安全方式連接;響應(yīng)于確定所述多個(gè)客戶端的所述第二給定客戶端并非將以所述安全方式連接,實(shí)例化所述多個(gè)協(xié)議棧的第二適當(dāng)協(xié)議棧的明文實(shí)例,以實(shí)現(xiàn)所述非安全連接;認(rèn)證所述多個(gè)客戶端的所述第二給定客戶端;以及授權(quán)所述多個(gè)客戶端的所述第二給定客戶端。
18.如權(quán)利要求17所述的裝置,還包括上面實(shí)現(xiàn)有不同軟件模塊的有形計(jì)算機(jī)可讀可記錄存儲(chǔ)介質(zhì),所述不同軟件模塊包括通信管理器模塊、網(wǎng)絡(luò)層模塊、安全協(xié)議錨模塊、標(biāo)準(zhǔn)協(xié)議錨模塊、和安全代理登錄上下文模塊;其中所述多個(gè)協(xié)議棧的所述部署通過在所述至少一個(gè)處理器上執(zhí)行的所述通信管理器模塊來執(zhí)行;所述檢測(cè)所述多個(gè)客戶端的所述第一和第二給定客戶端希望連接至所述發(fā)布-定制引擎通過在所述至少一個(gè)處理器上執(zhí)行的所述網(wǎng)絡(luò)層模塊來執(zhí)行;所述確定所述多個(gè)客戶端的所述第一和第二給定客戶端是否將以所述安全方式連接通過在所述至少一個(gè)處理器上執(zhí)行的所述網(wǎng)絡(luò)層模塊來執(zhí)行;所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述加密實(shí)例的所述實(shí)例化通過在所述至少一個(gè)處理器上執(zhí)行的所述安全協(xié)議錨模塊來執(zhí)行;所述多個(gè)客戶端的所述第一和第二給定客戶端的所述認(rèn)證通過在所述至少一個(gè)處理器上執(zhí)行的所述安全代理登錄上下文模塊來執(zhí)行;所述多個(gè)客戶端的所述第一和第二給定客戶端的所述授權(quán)通過在所述至少一個(gè)處理器上執(zhí)行的所述安全代理登錄上下文模塊來執(zhí)行;以及所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧的所述明文實(shí)例的所述實(shí)例化通過在所述至少一個(gè)處理器上執(zhí)行的所述標(biāo)準(zhǔn)協(xié)議錨模塊來執(zhí)行。
19.如權(quán)利要求18所述的裝置,其中所述至少一個(gè)處理器可操作為,通過使用所述通用接口在所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧中將安全套接字層模塊與所述可組合協(xié)議模塊聯(lián)接,來實(shí)例化所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述加密實(shí)例;以及所述至少一個(gè)處理器可操作為,通過使用所述通用接口在所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧中將傳送控制協(xié)議模塊與所述可組合協(xié)議模塊聯(lián)接,來實(shí)例化所述多個(gè)協(xié)議棧的所述第二適當(dāng)協(xié)議棧的所述明文實(shí)例。
20.如權(quán)利要求18所述的裝置,其中所述不同軟件模塊還包括認(rèn)證管理器模塊,所述認(rèn)證管理器模塊是所述安全代理登錄上下文模塊的一部分;以及授權(quán)管理器模塊,所述授權(quán)管理器模塊是所述安全代理登錄上下文模塊的一部分;以及其中所述至少一個(gè)處理器可操作為,通過一下步驟來認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端,包括提取在所述多個(gè)協(xié)議棧的所述第一適當(dāng)協(xié)議棧的所述實(shí)例化的加密實(shí)例中對(duì)于所述可組合協(xié)議模塊的每個(gè)的身份信息;基于所提取的身份信息建立通用身份對(duì)象; 使用所述認(rèn)證管理器模塊向所述發(fā)布-定制引擎提供所述通用身份對(duì)象;以及當(dāng)所述通用身份對(duì)象匹配于適當(dāng)認(rèn)證規(guī)則時(shí),認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端;所述多個(gè)客戶端的所述第一給定客戶端與用戶u 關(guān)聯(lián),u 是用戶標(biāo)識(shí)符;以及所述至少一個(gè)處理器可操作為,通過執(zhí)行所述授權(quán)管理器以進(jìn)行以下步驟來授權(quán)所述多個(gè)客戶端的所述第一給定客戶端,包括確定所述多個(gè)客戶端的所述第一給定客戶端希望執(zhí)行由P 指定的操作,P 是操作標(biāo)識(shí)符;確定期望所述操作在與資源r 相關(guān)的環(huán)境e 中執(zhí)行,r 是資源標(biāo)識(shí)符;提取與所述多個(gè)客戶端的所述第一給定客戶端關(guān)聯(lián)的功能組C ;以及當(dāng)所述參數(shù)u :、!· 、ρ 和e 包含于C中時(shí),授權(quán)所述多個(gè)客戶端的所述第一給定客戶端。
21. —種控制發(fā)布-定制引擎和多個(gè)客戶端之間的交互的裝置,所述裝置包括 部署多個(gè)協(xié)議棧的部件,所述協(xié)議棧的每個(gè)包括多個(gè)可組合協(xié)議模塊,所述可組合協(xié)議模塊的每個(gè)實(shí)現(xiàn)通用接口;檢測(cè)所述多個(gè)客戶端的第一給定客戶端希望連接至所述發(fā)布-定制引擎的部件; 確定所述多個(gè)客戶端的所述第一給定客戶端是否將以安全方式連接的部件; 響應(yīng)于確定所述多個(gè)客戶端的所述第一給定客戶端將以所述安全方式連接,實(shí)例化所述多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧的加密實(shí)例,以實(shí)現(xiàn)所述安全連接的部件; 認(rèn)證所述多個(gè)客戶端的所述第一給定客戶端的部件;以及授權(quán)所述多個(gè)客戶端的所述第一給定客戶端的部件。
全文摘要
部署多個(gè)協(xié)議棧。所述協(xié)議棧的每個(gè)包括多個(gè)可組合協(xié)議模塊,所述可組合協(xié)議模塊的每個(gè)實(shí)現(xiàn)通用接口。檢測(cè)所述多個(gè)客戶端的第一給定客戶端希望連接至所述發(fā)布-定制引擎;以及確定所述多個(gè)客戶端的所述第一給定客戶端是否將以安全方式連接。響應(yīng)于確定所述多個(gè)客戶端的所述第一給定客戶端將以所述安全方式連接,實(shí)例化所述多個(gè)協(xié)議棧的第一適當(dāng)協(xié)議棧的加密實(shí)例,以實(shí)現(xiàn)所述安全連接。認(rèn)證和授權(quán)所述多個(gè)客戶端的所述第一給定客戶端。
文檔編號(hào)H04L29/06GK102308548SQ200980156347
公開日2012年1月4日 申請(qǐng)日期2009年4月30日 優(yōu)先權(quán)日2009年2月12日
發(fā)明者D·N·鮑爾, S·G·魯尼 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司