久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

CloudStack如何生成Signature調用API

171次閱讀
沒有評論

共計 2665 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇文章主要介紹了 CloudStack 如何生成 Signature 調用 API,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

    一:前言  

/*************** 該段 - 官話 ********************/

CloudStack API 也是基于 Web Service,可以使用任何一種支持 HTTP 調用的語言(例如 Java,PHP)編寫代碼。

調用代碼(caller)首先需要在管理服務器進行認證。目前 CloudStack 采用兩種認證方式:

Session 認證:通過 login API,獲得一個 JSESSIONID cookie 和一個 SESSIONKEY token。

API Key 認證。

/*************** 該段 - 官話 ********************/

二:采用 API Key 進行認證:

1、生成 Signature 之前,我們得先擁有 [API Key] [Security  Key],該文主要記錄 Signature 加密實現,如何生成這兩個 Key   擼主 便不再贅述。

2、官方提供生成 Signature   的語言是 Perl:地址如下,可自行觀摩:

  https://github.com/snumano/CloudStack-API/blob/master/generate-url.pl

3、進而擼主又找到了 Python 版本:地址如下:

  https://github.com/jasonhancock/cloudstack-pythonclient/blob/master/CloudStack/BaseClient.py

4、當然也少不了 Java 版本的:CloudStack 開源包里應該能找到,在此擼主分享一篇帖文:

 http://blog.csdn.net/rishengcsdn/article/details/38387721

  三:使用 C# 生成 Signature,有了以上資料,寫起 C# 版本的,自是得心應手,當然也有些許差異,幾個問題需要注意:

 1、[ApiKey] [SecretKey] 字符串較長,切勿出錯

 2、參數加密時以小些形式

 3、參數加密時,需要對其進行排序(以參數第一個字母為準)

 4、加密前統一編碼:UTF8

 5、加密方式為:HmacSha1

 6、加密后信息確認編碼為:UTF8

 7、組合字符串

四:代碼實現(僅供參考,測試代碼)

如:獲取云主機的狀態信息

參數信息:

    調用地址:“http://*.*.*.*:**/client/api?”

   API 名稱:“listVirtualMachines”

    參       數:

               details=stats   狀態

               account=admin 操作人賬號

               id=**** 虛擬主機編號

API    KEY:“******************”

SecretKey:“****************”

 ///  summary   生成  CloudStack Signature  可執行 Url
 ///  生成  CloudStack  可執行 Url
 ///  /summary 
 ///  returns /returns 
 public string GetSignatureApiUrl()
 {
 /*  調用 CloudStack API  生成 Signature  并組合完整 URL
 * 1、根據配置獲取參數
 * 2、有效性驗證
 * 3、參數信息排序
 * 4、統一編碼  UTF-8
 * 5、使用 HmacSha1  編碼加密
 * 6、加密后內容再次轉 UTF-8
 * 7、組合
 */
 var ApiKey= ********************* 
 var SecretKey= ****************** 
 
 //CloudStack API  調用地址
 var DeveloperServer = http://*.*.*.*:**/client/api? 
 
 //ApiKey  統一編碼
 Encoding enc = new UTF8Encoding();
 string encodedApiKey = HttpUtility.UrlEncode(ApiKey, enc);
 string encodedSecreKey = HttpUtility.UrlEncode(SecretKey, enc);
 
 // 參數,傳遞過來
 List string  Args = new List string 
 Args.Add(command= +Command)
 Args.Add( details=stats 
 Args.Add( account=admin 
 Args.Add( id=**** 
 
 // 有效性驗證
 // 略
 
 var oldparmsString=string.Join(,Args);
 
 Args.Add(apikey= +ApiKey)
 // 參數信息進行排序
 Args = Args.OrderBy(o= o).ToList();
 
 // 參數拼接
 var paramsString = string.Join(,Args);
 // 對執行信息進行加密
 string signature = new HashEncryptHelp().HmacSha1(encodedSecreKey, paramsString.Tolower());
 // 加密信息轉 UTF-8
 string encodedSignature = HttpUtility.UrlEncode(signature, enc);
 // 組合 URL 字符
 string url = DeveloperServer + oldparmsString+  apikey=  + encodedApiKey +  signature=  + encodedSignature;
 return url;
 }

輸出:http://*.*.*.*:**/client/api?command=listVirtualMachines details=stats account=admin id=**** apikey=**** signature=****

測試執行:成功.

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“CloudStack 如何生成 Signature 調用 API”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-17發表,共計2665字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 万全县| 枣阳市| 潮州市| 乌兰县| 尉犁县| 浮梁县| 长治市| 大悟县| 贵州省| 东平县| 曲阜市| 兴化市| 贵南县| 新郑市| 子长县| 修水县| 察隅县| 清苑县| 兰西县| 昆山市| 西平县| 陆川县| 阿图什市| 昔阳县| 菏泽市| 边坝县| 天水市| 神木县| 沙雅县| 石渠县| 正安县| 奉节县| 普宁市| 余姚市| 巨野县| 循化| 阜阳市| 忻州市| 武隆县| 彰化市| 家居|