一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái)的制作方法
【專利摘要】一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),服務(wù)提供方將自己要對(duì)外開(kāi)放的服務(wù)接口注冊(cè)到平臺(tái)中并配置相關(guān)調(diào)用策略,平臺(tái)對(duì)其接口進(jìn)行鑒權(quán)控制、調(diào)用統(tǒng)計(jì)及計(jì)費(fèi),并提供負(fù)載均衡能力,服務(wù)提供方可以將自己提供的一種或多種接口進(jìn)行打包,平臺(tái)將這種接口包稱之為能力,能力是服務(wù)調(diào)用方進(jìn)行訂購(gòu)的最小單元,服務(wù)調(diào)用方平臺(tái),根據(jù)自己的需求查找相應(yīng)的服務(wù)能力進(jìn)行訂購(gòu),平臺(tái)管理員審批通過(guò)后即可按照平臺(tái)提供的調(diào)用規(guī)范進(jìn)行開(kāi)發(fā);平臺(tái)機(jī)會(huì)記錄所有接口每次的調(diào)用日志并按照計(jì)費(fèi)策略進(jìn)行計(jì)費(fèi),并以表格和圖標(biāo)的形式給出賬單及調(diào)用明細(xì)。本發(fā)明服務(wù)調(diào)用方提供高效可靠的服務(wù)接口,為服務(wù)提供方提供了簡(jiǎn)單易配的負(fù)載均衡能力,集成了鑒權(quán)、計(jì)費(fèi)、日志記錄。
【專利說(shuō)明】
一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及云計(jì)算技術(shù)領(lǐng)域,具體涉及一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái)O
【背景技術(shù)】
[0002]現(xiàn)有的類似平臺(tái),僅是作為一個(gè)代理層,將服務(wù)調(diào)用方的調(diào)用請(qǐng)求轉(zhuǎn)發(fā)至服務(wù)提供方的服務(wù)接口上,沒(méi)有做高可靠的負(fù)載均衡處理也沒(méi)有對(duì)調(diào)用方的身份進(jìn)行認(rèn)證,沒(méi)有配置調(diào)用策略和計(jì)費(fèi)策略,甚至沒(méi)有進(jìn)行計(jì)費(fèi)。并且現(xiàn)在的類似平臺(tái)沒(méi)有對(duì)服務(wù)提供者所提供的服務(wù)進(jìn)行規(guī)范化管理,導(dǎo)致各個(gè)服務(wù)提供方都有自己的標(biāo)準(zhǔn),提供的接口形式千差萬(wàn)別。
[0003]針對(duì)以上問(wèn)題,迫切需要對(duì)服務(wù)提供方進(jìn)行規(guī)范化約束,使得各個(gè)服務(wù)提供方提供的服務(wù)都遵循統(tǒng)一的標(biāo)準(zhǔn)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問(wèn)題是:本發(fā)明提供一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),支持對(duì)調(diào)用方的身份進(jìn)行認(rèn)證,未訂購(gòu)或者欠費(fèi)的調(diào)用方將被限制調(diào)用服務(wù)接口,并且本發(fā)明對(duì)服務(wù)提供方提供的服務(wù)做了高可靠性的負(fù)載均衡,并能提供一下服務(wù):
1、為服務(wù)提供方提供一套切實(shí)可依的接口規(guī)范;
2、對(duì)服務(wù)調(diào)用方進(jìn)行鑒權(quán)認(rèn)證及計(jì)費(fèi)處理;
3、提供靈活機(jī)制,為每個(gè)服務(wù)接口配置獨(dú)立的調(diào)用策略及計(jì)費(fèi)策略;
4、為每個(gè)服務(wù)接口附加高可靠性的負(fù)載均衡處理。
[0005]本發(fā)明所采用的技術(shù)方案為:
一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),服務(wù)提供方將自己要對(duì)外開(kāi)放的服務(wù)接口注冊(cè)到平臺(tái)中并配置相關(guān)調(diào)用策略,平臺(tái)對(duì)其接口進(jìn)行鑒權(quán)控制、調(diào)用統(tǒng)計(jì)及計(jì)費(fèi),并提供負(fù)載均衡能力,服務(wù)提供方可以將自己提供的一種或多種接口進(jìn)行打包,平臺(tái)將這種接口包稱之為能力,能力是服務(wù)調(diào)用方進(jìn)行訂購(gòu)的最小單元,服務(wù)調(diào)用方平臺(tái),根據(jù)自己的需求查找相應(yīng)的服務(wù)能力進(jìn)行訂購(gòu),平臺(tái)管理員審批通過(guò)后即可按照平臺(tái)提供的調(diào)用規(guī)范進(jìn)行開(kāi)發(fā);平臺(tái)機(jī)會(huì)記錄所有接口每次的調(diào)用日志并按照計(jì)費(fèi)策略進(jìn)行計(jì)費(fèi),并以表格和圖標(biāo)的形式給出賬單及調(diào)用明細(xì)。
[0006]所述平臺(tái)包括3個(gè)部分:服務(wù)容器、管控前臺(tái)、管控后臺(tái),其中:
服務(wù)容器對(duì)外提供統(tǒng)一的代理入口,支持http、https、webservice方式的服務(wù)接口接入,服務(wù)容器對(duì)請(qǐng)求消息及響應(yīng)消息進(jìn)行透?jìng)鳎ㄟ^(guò)服務(wù)路由器和一系列的攔截器進(jìn)行鑒權(quán)、計(jì)費(fèi)和記錄日志;服務(wù)容器集成了負(fù)載均衡功能,服務(wù)提供方提供多個(gè)服務(wù)源,并配置各個(gè)服務(wù)源的權(quán)重,服務(wù)容器根據(jù)所配權(quán)重實(shí)現(xiàn)負(fù)載均衡的功能。
[0007]管控前臺(tái)為用戶提供可視化的管理頁(yè)面,包括對(duì)服務(wù)接口的注冊(cè)及能力生命周期的管理,能力訂閱、日志查詢及統(tǒng)計(jì)報(bào)表、系統(tǒng)管理等功能; 管控前臺(tái)與管控后臺(tái)通過(guò)dubbo服務(wù)進(jìn)行數(shù)據(jù)通信。
[0008]平臺(tái)支持Http、Https及Websevice協(xié)議的接口。
[0009]Dubbo是一個(gè)分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。簡(jiǎn)單的說(shuō),就是遠(yuǎn)程服務(wù)調(diào)用的分布式框架(告別Web Service模式中的WSdl,以服務(wù)者與消費(fèi)者的方式在dubbo上注冊(cè))。
[00?0] 所述服務(wù)容器采用Apache Camel 2.15 + Spring.3.2 + Dubbo框架,數(shù)據(jù)庫(kù)采用my sq 15,Came I用來(lái)實(shí)現(xiàn)消息的路由,對(duì)系統(tǒng)的各個(gè)模塊進(jìn)行解親。
[0011]Apache Camel是Apache基金會(huì)下的一個(gè)開(kāi)源項(xiàng)目,它是一個(gè)基于規(guī)則路由和處理的引擎,提供企業(yè)集成模式的Java對(duì)象的實(shí)現(xiàn),通過(guò)應(yīng)用程序接口或稱為陳述式的Java領(lǐng)域特定語(yǔ)言(DSL)來(lái)配置路由和處理的規(guī)則。其核心的思想就是從一個(gè)from源頭得到數(shù)據(jù),通過(guò)processor處理,再發(fā)到一個(gè)to的目的。
[0012]Spring是一個(gè)開(kāi)源框架,Spring是于2003年興起的一個(gè)輕量級(jí)的Java開(kāi)發(fā)框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來(lái)。它是為了解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的??蚣艿闹饕獌?yōu)勢(shì)之一就是其分層架構(gòu),分層架構(gòu)允許使用者選擇使用哪一個(gè)組件,同時(shí)為J2EE應(yīng)用程序開(kāi)發(fā)提供集成的框架。
[0013]MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù),由瑞典MySQL AB公司開(kāi)發(fā),目前屬于Oracle旗下公司。MySQL最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在WEB應(yīng)用方面MySQL是最好的RDBMS(Relat1nal Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一。
[0014]所述服務(wù)容器涉及的所有服務(wù)采用統(tǒng)一入口,入口的協(xié)議為http,支持GET、P0ST、PUT、DELET方式;服務(wù)容器結(jié)構(gòu)包括集中代理層、參數(shù)解析器模塊,其中:
集中代理層攔截所有的用戶請(qǐng)求,然后將整個(gè)請(qǐng)求報(bào)文向下傳遞至參數(shù)解析模塊;參數(shù)解析器模塊從請(qǐng)求對(duì)象(request)中解析出消息頭(header )部分有用信息,并讀取消息體(body)信息,然后將消息傳遞至認(rèn)證服務(wù)進(jìn)行身份及權(quán)限認(rèn)證。
[00?5] 所述集中代理層采用一個(gè)Spr ingMVC實(shí)現(xiàn)一個(gè)HTTP服務(wù),分別實(shí)現(xiàn)doGet、doPost、doPut、doDelete方法,然后將請(qǐng)求對(duì)象向下傳遞至參數(shù)解析器模塊。
[0016]Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring框架提供了構(gòu)建Web應(yīng)用程序的全功能MVC模塊。使用Spring可插入的MVC架構(gòu),可以選擇是使用內(nèi)置的Spring Web框架還可以是Struts這樣的Web框架。
[0017]所述參數(shù)解析器模塊通過(guò)定義一個(gè)ParamAnalyser類,從請(qǐng)求對(duì)象中讀取消息頭和消息體,然后將消息頭和消息體封裝成一個(gè)R e qM e s s a g e對(duì)象,R e qM e s s a g e將消息頭中Capaci tyCode、ApiCode、SICode、SIGN、charset字段進(jìn)行顯式的封裝,并將消息頭中的所有字段保存至map,對(duì)UrL中參數(shù)串和body內(nèi)容進(jìn)行顯式封裝。
[0018]所述認(rèn)證通過(guò)從上個(gè)節(jié)點(diǎn)讀取ReqMessage,然后進(jìn)行認(rèn)證,認(rèn)證包含以下2部分:
1)根據(jù)SICode和SIGN對(duì)消費(fèi)者的身份和請(qǐng)求數(shù)據(jù)的合法性(是否被篡改)進(jìn)行認(rèn)證;
2)根據(jù)SICode、CapacityCode和APICode進(jìn)行用戶訂購(gòu)信息認(rèn)證,判斷用戶是否訂購(gòu)了該能力,該API是否包含在該能力下;
認(rèn)證成功則將ReqMessage繼續(xù)向下傳遞至下一個(gè)處理節(jié)點(diǎn);
認(rèn)證失敗則構(gòu)造失敗消息返回調(diào)用者。
[0019]所述認(rèn)證實(shí)現(xiàn)過(guò)程如下:
定義AuthServi ce類,從ReqMes sage 中讀取SI Code、Capaci tyCode、APICode、SIGN字段的內(nèi)容,然后根首先進(jìn)行消費(fèi)者身份和數(shù)據(jù)合法性認(rèn)證,步驟如下:
1)SIGN字段還原:
首先使用base64進(jìn)行解碼,然后查詢出SICode對(duì)應(yīng)的sicretcode,對(duì)其進(jìn)行SHA解密,最后得到串S;然后構(gòu)造如下串:
${ CapacityCode } + “\n” +
${ ApiCode } + “\n” +
${ SICode } + “\n” +
${ Timestamp } + “\n” +
${HTTPMethod} + “\n” +
URLEncode(${URL中之后的請(qǐng)求串}) +,,\n” +
${消息體}
其中 URLEncode 函數(shù)是指將字符串轉(zhuǎn)換為 applicat1n/x-www-form-ur I encodedMIME格式,編碼方式采用UTF-8;最后將得到的串S’和S進(jìn)行比照,若兩串相同,則說(shuō)明用戶身份合法并且信息沒(méi)有被篡改;
否則說(shuō)明用戶身份不合法或者信息被篡改,丟棄本次請(qǐng)求,并給消費(fèi)方發(fā)送響應(yīng)消息: http header部分:
Result=-2
Result Info=認(rèn)證失敗 http Body部分保留為空。
[0020]對(duì)消費(fèi)方訪問(wèn)頻率的控制通過(guò)訪問(wèn)頻次控制器實(shí)現(xiàn),通過(guò)配置文件配置一個(gè)頻次閥值(默認(rèn)在inspur.properties文件中增加一個(gè)call_ frequency變量來(lái)表示),以分鐘為單位,對(duì)同一消費(fèi)方,token(記號(hào))相同的請(qǐng)求頻次進(jìn)行計(jì)算,若超過(guò)閥值則直接對(duì)消費(fèi)方進(jìn)行響應(yīng),http header部分:
Result=-8
ResultInf ο=訪問(wèn)頻率過(guò)高,請(qǐng)稍后訪問(wèn) http Body部分保留為空。
[0021 ] 返回響應(yīng)消息之前需要經(jīng)過(guò)日志攔截器進(jìn)行日志記錄
所述訪問(wèn)頻次控制器通過(guò)定義一個(gè)CalIControler類,讀取cal 1_ frequency的值η,為每一個(gè)token建立一個(gè)隊(duì)列用來(lái)順序保存最近訪問(wèn)日期,隊(duì)列長(zhǎng)度設(shè)為η,當(dāng)隊(duì)列溢出時(shí),自動(dòng)淘汰隊(duì)列末尾的元素;接收到消費(fèi)方請(qǐng)求時(shí),首先判斷隊(duì)列首尾元素的時(shí)間差值是否大于I分鐘,若大于則說(shuō)明超速,否則認(rèn)為正常。
[0022]所述管控前臺(tái)功能模塊包括服務(wù)接口管理、能力管理、能力訂購(gòu)、平臺(tái)規(guī)范、能力審批、服務(wù)審批。
[0023]前臺(tái)技術(shù)采用bootstrap+Jquery0
[0024]ootstrap,來(lái)自Twitter,是目前最受歡迎的前端框架。Bootstrap是基于HTML、CSS,JAVASCRIPT的,它簡(jiǎn)潔靈活,使得Web開(kāi)發(fā)更加快捷。它由Twitter的設(shè)計(jì)師MarkOtto和Jacob Thornton合作開(kāi)發(fā),是一個(gè)CSS/HTML框架。Bootstrap提供了優(yōu)雅的HTML和CSS規(guī)范,它即是由動(dòng)態(tài)CSS語(yǔ)言Less寫成。
[°°25] jQuery是一套跨瀏覽器的JavaScript庫(kù),簡(jiǎn)化HTML與JavaScript之間的操作。
[0026]所述管控后臺(tái)采用Spring+mybatis+dubbo技術(shù),
消費(fèi)者提交認(rèn)證時(shí),需要在http header部分加入自定義參數(shù):
CapacityCode=KpiSearch
ApiCode=irms
SICode=JKL201409890
APPKey=ADD89swdAD
SIGN=dasdasdasdadadadlI122121AAAAAAAAAAADTimestamp=20150101100000
其中Capaci tyCode是能力標(biāo)識(shí),ApiCode是API的標(biāo)識(shí)。SI Code是Si廠商的編碼。APPKey是APP的標(biāo)識(shí)。T ime s tamp是請(qǐng)求的時(shí)間戳,用于防止rep I ay攻擊,本次請(qǐng)求簽名的有效時(shí)間為該時(shí)間戳+10分鐘。SIGN是簽名信息。
[0027]本發(fā)明的有益效果為:
本發(fā)明服務(wù)調(diào)用方提供高效可靠的服務(wù)接口,為服務(wù)提供方提供了簡(jiǎn)單易配的負(fù)載均衡能力,集成了鑒權(quán)、計(jì)費(fèi)、日志記錄節(jié)省了服務(wù)提供方這些模塊的開(kāi)發(fā)工作。
【附圖說(shuō)明】
[0028]圖1為本發(fā)明所述平臺(tái)結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0029]下面結(jié)合說(shuō)明書附圖,通過(guò)【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)一步說(shuō)明:
實(shí)施例1:
如圖1所示,一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),所述平臺(tái)包括3個(gè)部分:服務(wù)容器、管控前臺(tái)、管控后臺(tái),其中:
服務(wù)容器對(duì)外提供統(tǒng)一的代理入口,支持http、https、webservice方式的服務(wù)接口接入,服務(wù)容器對(duì)請(qǐng)求消息及響應(yīng)消息進(jìn)行透?jìng)?,通過(guò)服務(wù)路由器和一系列的攔截器進(jìn)行鑒權(quán)、計(jì)費(fèi)和記錄日志;服務(wù)容器集成了負(fù)載均衡功能,服務(wù)提供方提供多個(gè)服務(wù)源,并配置各個(gè)服務(wù)源的權(quán)重,服務(wù)容器根據(jù)所配權(quán)重實(shí)現(xiàn)負(fù)載均衡的功能。
[0030]管控前臺(tái)為用戶提供可視化的管理頁(yè)面,包括對(duì)服務(wù)接口的注冊(cè)及能力生命周期的管理,能力訂閱、日志查詢及統(tǒng)計(jì)報(bào)表、系統(tǒng)管理等功能;
管控前臺(tái)與管控后臺(tái)通過(guò)dubbo服務(wù)進(jìn)行數(shù)據(jù)通信。
[0031]實(shí)施例2:
在實(shí)施例1的基礎(chǔ)上,本實(shí)施例所述服務(wù)容器采用Apache Camel 2.15 + Spring.3.2+ Dubbo框架,數(shù)據(jù)庫(kù)采用my sql 5,Came I用來(lái)實(shí)現(xiàn)消息的路由,對(duì)系統(tǒng)的各個(gè)模塊進(jìn)行解親。
[0032]所述服務(wù)容器涉及的所有服務(wù)采用統(tǒng)一入口,入口的協(xié)議為http,支持GET、P0ST、PUT、DELET方式;服務(wù)容器結(jié)構(gòu)包括集中代理層、參數(shù)解析器模塊,其中:
集中代理層攔截所有的用戶請(qǐng)求,然后將整個(gè)請(qǐng)求報(bào)文向下傳遞至參數(shù)解析模塊; 參數(shù)解析器模塊從請(qǐng)求對(duì)象(request)中解析出消息頭(header )部分有用信息,并讀取消息體(body)信息,然后將消息傳遞至認(rèn)證服務(wù)進(jìn)行身份及權(quán)限認(rèn)證。
[0033]實(shí)施例3:
在實(shí)施例2的基礎(chǔ)上,本實(shí)施例所述集中代理層采用一個(gè)SpringMVC實(shí)現(xiàn)一個(gè)HTTP服務(wù),分別實(shí)現(xiàn)doGet、doPost、doPut、doDelete方法,然后將請(qǐng)求對(duì)象向下傳遞至參數(shù)解析器模塊。
[0034]實(shí)施例4:
在實(shí)施例2的基礎(chǔ)上,本實(shí)施例所述參數(shù)解析器模塊通過(guò)定義一個(gè)ParamAnalyser類,從請(qǐng)求對(duì)象中讀取消息頭和消息體,然后將消息頭和消息體封裝成一個(gè)ReqMessage對(duì)象,ReqMessage將消息頭中 Capaci tyCode、ApiCode、SICode、SIGN、char set字段進(jìn)行顯式的封裝,并將消息頭中的所有字段保存至map,對(duì)UrL中參數(shù)串和body內(nèi)容進(jìn)行顯式封裝。
[0035]實(shí)施例5:
在實(shí)施例4的基礎(chǔ)上,本實(shí)施例所述認(rèn)證通過(guò)從上個(gè)節(jié)點(diǎn)讀取ReqMessage,然后進(jìn)行認(rèn)證,認(rèn)證包含以下2部分:
1)根據(jù)SICode和SIGN對(duì)消費(fèi)者的身份和請(qǐng)求數(shù)據(jù)的合法性(是否被篡改)進(jìn)行認(rèn)證;
2)根據(jù)SICode、CapacityCode和APICode進(jìn)行用戶訂購(gòu)信息認(rèn)證,判斷用戶是否訂購(gòu)了該能力,該API是否包含在該能力下;
認(rèn)證成功則將ReqMessage繼續(xù)向下傳遞至下一個(gè)處理節(jié)點(diǎn);
認(rèn)證失敗則構(gòu)造失敗消息返回調(diào)用者。
[0036]實(shí)施例6:
在實(shí)施例5的基礎(chǔ)上,本實(shí)施例所述認(rèn)證實(shí)現(xiàn)過(guò)程如下:
定義AuthServi ce類,從ReqMes sage 中讀取SI Code、Capaci tyCode、APICode、SIGN字段的內(nèi)容,然后根首先進(jìn)行消費(fèi)者身份和數(shù)據(jù)合法性認(rèn)證,步驟如下:
1)SIGN字段還原:
首先使用base64進(jìn)行解碼,然后查詢出SICode對(duì)應(yīng)的sicretcode,對(duì)其進(jìn)行SHA解密,最后得到串S;然后構(gòu)造如下串:
${ CapacityCode } + “\n” +
${ ApiCode } + “\n” +
${ SICode } + “\n” +
${ Timestamp } + “\n” +
${HTTPMethod} + “\n” +
URLEncode(${URL中之后的請(qǐng)求串}) +,,\n” +
${消息體}
其中 URLEncode 函數(shù)是指將字符串轉(zhuǎn)換為 applicat1n/x-www-form-ur I encodedMIME格式,編碼方式采用UTF-8;最后將得到的串S’和S進(jìn)行比照,若兩串相同,則說(shuō)明用戶身份合法并且信息沒(méi)有被篡改;
否則說(shuō)明用戶身份不合法或者信息被篡改,丟棄本次請(qǐng)求,并給消費(fèi)方發(fā)送響應(yīng)消息: http header部分:
Result=-2Result Inf ο=認(rèn)證失敗http Body部分保留為空。
[0037]實(shí)施例7:
在實(shí)施例6的基礎(chǔ)上,本實(shí)施例對(duì)消費(fèi)方訪問(wèn)頻率的控制通過(guò)訪問(wèn)頻次控制器實(shí)現(xiàn),通過(guò)配置文件配置一個(gè)頻次閥值(默認(rèn)在inspur, properties文件中增加一個(gè)cal 1_frequency變量來(lái)表示),以分鐘為單位,對(duì)同一消費(fèi)方(token相同)的請(qǐng)求頻次進(jìn)行計(jì)算,若超過(guò)閥值則直接對(duì)消費(fèi)方進(jìn)行響應(yīng),http header部分:
Result=-8
ResultInfο=訪問(wèn)頻率過(guò)高,請(qǐng)稍后訪問(wèn) http Body部分保留為空
返回響應(yīng)消息之前需要經(jīng)過(guò)日志攔截器進(jìn)行日志記錄。
[0038]實(shí)施例8:
在實(shí)施例7的基礎(chǔ)上,本實(shí)施例所述訪問(wèn)頻次控制器通過(guò)定義一個(gè)Cal IControler類,讀取call_ frequency的值n,為每一個(gè)token建立一個(gè)隊(duì)列用來(lái)順序保存最近訪問(wèn)日期,隊(duì)列長(zhǎng)度設(shè)為n,當(dāng)隊(duì)列溢出時(shí),自動(dòng)淘汰隊(duì)列末尾的元素;接收到消費(fèi)方請(qǐng)求時(shí),首先判斷隊(duì)列首尾元素的時(shí)間差值是否大于I分鐘,若大于則說(shuō)明超速,否則認(rèn)為正常。
[0039]實(shí)施例9:
在任一實(shí)施例1-8的基礎(chǔ)上,本實(shí)施例所述管控前臺(tái)功能模塊包括服務(wù)接口管理、能力管理、能力訂購(gòu)、平臺(tái)規(guī)范、能力審批、服務(wù)審批。
[0040]前臺(tái)技術(shù)采用bootstrap +Jquery技術(shù)。
[0041]實(shí)施例10:
在任一實(shí)施例6-8的基礎(chǔ)上,本實(shí)施例所述管控后臺(tái)采用Spring+mybatis+dubbo技術(shù),
消費(fèi)者提交認(rèn)證時(shí),需要在http header部分加入自定義參數(shù):
CapacityCode=KpiSearch
ApiCode=irms
SICode=JKL201409890
APPKey=ADD89swdAD
SIGN=dasdasdasdadadadlll22121AAAAAAAAAAAD
Timestamp=20150101100000
其中Capaci tyCode是能力標(biāo)識(shí),ApiCode是API的標(biāo)識(shí)Code是Si廠商的編碼。APPKey是APP的標(biāo)識(shí)c^Timestamp是請(qǐng)求的時(shí)間戳,用于防止replay攻擊,本次請(qǐng)求簽名的有效時(shí)間為該時(shí)間戳+10分鐘。SIGN是簽名信息,簽名信息的生成規(guī)則如下:
1、首先構(gòu)造簽名之前的串如下:
${ CapacityCode } + “\n” +
${ ApiCode } + “\n” +
${ SICode } + “\n” +
${ Timestamp } + “\n” +
${HTTPMethod} + “\n” +
URLEncode(${URL中之后的請(qǐng)求串}) +,,\n” + ${消息體}
URLEncode函數(shù)是指將字符串轉(zhuǎn)換為 applicat1n/x-www-form-urlencoded MIME 格式。編碼方式采用UTF-8。
[0042 ] 需要注意的是如果URL中的參數(shù)串存在中文,則需要進(jìn)行2次URLEncode編碼。
[0043]2、然后使用能力平臺(tái)提供的密鑰進(jìn)行SHA加密,最后進(jìn)行base64編碼生成最終的簽名串。
[0044]返回響應(yīng)消息時(shí),http head部分添加自定義參數(shù):
Timestamp=20150101100000
Result:。
ResultInfo:%7BurI%3A%2 2h11p%3A//news.baidu.com/%2 2%2Cword%3A%2 2%2 2%7D其中Result是狀態(tài)碼,0表示成功,其他表示失敗,Result Info是狀態(tài)描述。Timestamp是響應(yīng)的時(shí)間戳
消息體則是對(duì)提供方響應(yīng)消息的透?jìng)鳌?br>[0045]以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
【主權(quán)項(xiàng)】
1.一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于:服務(wù)提供方將自己要對(duì)外開(kāi)放的服務(wù)接口注冊(cè)到平臺(tái)中并配置相關(guān)調(diào)用策略,平臺(tái)對(duì)其接口進(jìn)行鑒權(quán)控制、調(diào)用統(tǒng)計(jì)及計(jì)費(fèi),并提供負(fù)載均衡能力;服務(wù)提供方能夠?qū)⒆约禾峁┑囊环N或多種接口進(jìn)行打包,平臺(tái)將這種接口包稱之為能力,能力是服務(wù)調(diào)用方進(jìn)行訂購(gòu)的最小單元;服務(wù)調(diào)用方平臺(tái),根據(jù)自己的需求查找相應(yīng)的服務(wù)能力進(jìn)行訂購(gòu),平臺(tái)管理員審批通過(guò)后即可按照平臺(tái)提供的調(diào)用規(guī)范進(jìn)行開(kāi)發(fā);平臺(tái)機(jī)會(huì)記錄所有接口每次的調(diào)用日志并按照計(jì)費(fèi)策略進(jìn)行計(jì)費(fèi),并以表格和圖標(biāo)的形式給出賬單及調(diào)用明細(xì);所述平臺(tái)包括3個(gè)部分:服務(wù)容器、管控前臺(tái)、管控后臺(tái),其中: 服務(wù)容器對(duì)外提供統(tǒng)一的代理入口,服務(wù)容器對(duì)請(qǐng)求消息及響應(yīng)消息進(jìn)行透?jìng)鳎ㄟ^(guò)服務(wù)路由器和一系列的攔截器進(jìn)行鑒權(quán)、計(jì)費(fèi)和記錄日志; 管控前臺(tái)為用戶提供可視化的管理頁(yè)面,包括對(duì)服務(wù)接口的注冊(cè)及能力生命周期的管理,能力訂閱、日志查詢及統(tǒng)計(jì)報(bào)表、系統(tǒng)管理功能; 管控前臺(tái)與管控后臺(tái)通過(guò)dubbo服務(wù)進(jìn)行數(shù)據(jù)通信。2.根據(jù)權(quán)利要求1所述的一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于:所述服務(wù)容器涉及的所有服務(wù)采用統(tǒng)一入口,入口的協(xié)議為http,支持GET、POST、PUT、DELET方式;服務(wù)容器結(jié)構(gòu)包括集中代理層、參數(shù)解析器模塊,其中: 集中代理層攔截所有的用戶請(qǐng)求,然后將整個(gè)請(qǐng)求報(bào)文向下傳遞至參數(shù)解析模塊; 參數(shù)解析器模塊從請(qǐng)求對(duì)象中解析出消息頭部分有用信息,并讀取消息體信息,然后將消息傳遞至認(rèn)證服務(wù)進(jìn)行身份及權(quán)限認(rèn)證。3.根據(jù)權(quán)利要求2所述的一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于:所述集中代理層采用一個(gè)SpringMVC實(shí)現(xiàn)一個(gè)HTTP服務(wù),分別實(shí)現(xiàn)doGet、doPost、doPut、doDelete方法,然后將請(qǐng)求對(duì)象向下傳遞至參數(shù)解析器模塊。4.根據(jù)權(quán)利要求2所述的一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于:所述參數(shù)解析器模塊通過(guò)定義一個(gè)ParamAnalyser類,從request對(duì)象讀取消息頭和消息體,然后將消息頭和消息體封裝成一個(gè)Re qMe s sage對(duì)象,ReqMe s sage將消息頭中Capaci tyCode、ApiCode、SICode、SIGN、charset字段進(jìn)行顯式的封裝,并將消息頭中的所有字段保存至map,對(duì)UrL中參數(shù)串和body內(nèi)容進(jìn)行顯式封裝。5.根據(jù)權(quán)利要求4所述的一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于:所述認(rèn)證過(guò)程通過(guò)讀取ReqMessage,然后進(jìn)行認(rèn)證,認(rèn)證包含以下2部分: 1)根據(jù)SICode和SIGN對(duì)消費(fèi)者的身份和請(qǐng)求數(shù)據(jù)的合法性進(jìn)行認(rèn)證; 2)根據(jù)SICode、CapacityCode和APICode進(jìn)行用戶訂購(gòu)信息認(rèn)證,判斷用戶是否訂購(gòu)了該能力,改API是否包含在該能力下; 認(rèn)證成功則將ReqMessage繼續(xù)向下傳遞至下一個(gè)處理節(jié)點(diǎn); 認(rèn)證失敗則構(gòu)造失敗消息返回調(diào)用者。6.根據(jù)權(quán)利要求5所述的一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于,所述認(rèn)證過(guò)程實(shí)現(xiàn)過(guò)程如下: 定義 AuthServi ce 類,從ReqMe s sage 中讀取SI Code、Capaci tyCode、API Code、SIGN字段的內(nèi)容,然后根首先進(jìn)行消費(fèi)者身份和數(shù)據(jù)合法性認(rèn)證,步驟如下: 1)SIGN字段還原: 首先使用base64進(jìn)行解碼,然后查詢出SICode對(duì)應(yīng)的si eretcode,對(duì)其進(jìn)行SHA解密,最后得到串S,然后構(gòu)造如下串: ${ CapacityCode } + “\n” + ${ ApiCode } + “\n” + ${ SICode } + “\n” + ${ Timestamp } + “\n,,+ ${HTTPMethod} + “\n” + URLEncode(${URL中之后的請(qǐng)求串}) +,,\n” + ${消息體} 其中 URLEncode 函數(shù)是指將字符串轉(zhuǎn)換為 appl icat1n/x-www-form-ur I encodedMIME格式,編碼方式采用UTF-8;最后將得到的串S’和S進(jìn)行比照,若兩串相同,則說(shuō)明用戶身份合法并且信息沒(méi)有被篡改; 否則說(shuō)明用戶身份不合法或者信息被篡改,丟棄本次請(qǐng)求,并給消費(fèi)方發(fā)送響應(yīng)消息: http header部分: Result=-2 Result Inf ο=認(rèn)證失敗 http Body部分保留為空。7.根據(jù)權(quán)利要求6所述的一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于:對(duì)消費(fèi)方訪問(wèn)頻率的控制通過(guò)訪問(wèn)頻次控制器實(shí)現(xiàn),通過(guò)配置文件配置一個(gè)頻次閥值,以分鐘為單位,對(duì)同一消費(fèi)方token相同的請(qǐng)求頻次進(jìn)行計(jì)算,若超過(guò)閥值則直接對(duì)消費(fèi)方進(jìn)行響應(yīng),http header部分: Result=-8 Resul t Inf ο=訪問(wèn)頻率過(guò)高,請(qǐng)稍后訪問(wèn) http Body部分保留為空 返回響應(yīng)消息之前需要經(jīng)過(guò)日志攔截器進(jìn)行日志記錄。8.根據(jù)權(quán)利要求7所述的一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于:所述訪問(wèn)頻次控制器通過(guò)定義一個(gè)CalIControler類,讀取cal 1_ frequency的值η,為每一個(gè)token建立一個(gè)隊(duì)列用來(lái)順序保存最近訪問(wèn)日期,隊(duì)列長(zhǎng)度設(shè)為η,當(dāng)隊(duì)列溢出時(shí),自動(dòng)淘汰隊(duì)列末尾的元素;接收到消費(fèi)方請(qǐng)求時(shí),首先判斷隊(duì)列首尾元素的時(shí)間差值是否大于I分鐘,若大于則說(shuō)明超速,否則認(rèn)為正常。9.根據(jù)權(quán)利要求1-8任一所述的一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于:所述管控前臺(tái)功能模塊包括服務(wù)接口管理、能力管理、能力訂購(gòu)、平臺(tái)規(guī)范、能力審批、服務(wù)審批。10.根據(jù)權(quán)利要求6-8任一所述的一種政企云平臺(tái)中的能力開(kāi)放管控服務(wù)平臺(tái),其特征在于:消費(fèi)者提交認(rèn)證時(shí)需要在http header部分加入自定義參數(shù): CapacityCode=KpiSearch ApiCode=irms SICode=JKL201409890 APPKey=ADD89swdAD SIGN=dasdasdasdadadadlll22121AAAAAAAAAAAD Timestamp=20150101100000 其中Capaci tyCode是能力標(biāo)識(shí),Api Code是API的標(biāo)識(shí),SI Code是Si廠商的編碼,APPKey是APP的標(biāo)識(shí),Timestamp是請(qǐng)求的時(shí)間戳,用于防止replay攻擊,SIGN是簽名信息。
【文檔編號(hào)】H04L29/06GK105872051SQ201610194692
【公開(kāi)日】2016年8月17日
【申請(qǐng)日】2016年3月31日
【發(fā)明人】張仁斌
【申請(qǐng)人】浪潮通信信息系統(tǒng)有限公司