码迷,mamicode.com
首页 > Windows程序 > 详细

如何调用cloudstacsk的API

时间:2015-09-03 23:20:26      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

CloudStack API调用
  <1>制作API请求
  所有的CloudStack API请求是以HTTP GET / POST有一个关联的命令和任何参数的形式提交的。无论在HTTP或HTTPS中请求都由一下组成:
  l CloudStack API URL:这是Web服务的API入口点(例如,http://域名:8080/client/api)。
  l 命令(Command):Web服务命令要执行,如启动虚拟机或创建一个磁盘卷。
  l 参数(Parameters):任何额外的要求或命令的可选参数。
  一个API GET请求示例如下:
  http。//localhost。8080/client/api?command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D
  或如下一个更可读的示例:
  1. http。//localhost。8080/client/api?command=deployVirtualMachine
  3. &serviceOfferingId=1
  4. &diskOfferingId=1
  5. &templateId=2
  6. &zoneId=4
  7.&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXqjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ
  8. &signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D%3D
  第1行是的CloudStackAPI URL。这是你希望进行交互的云实例。
  第2行是指你要执行的命令。在我们的例子中,我们试图部署一个新的虚拟机。通过前面的一个(?)将要执行的命令从CloudStackAPI URL中分离出来。
  第3-6行是此命令的参数。要查看命令和请求参数,请参阅在CloudStack API文档的相应部分。每个参数字段-值对(field =value)通过前面的字符(&)分隔开。
  第7行是可以唯一标识帐户的APIkey。请参阅第9页上的签名API请求。
  第8行是创建的签名哈希来验证用户帐户执行的API命令。
  请参阅第9页上的签名API请求。
  2启用API调用过期
  您可以设定的到期时间戳记API调用以防止重放攻击通过非安全通道,如HTTP。服务器跟踪您所指定的到期时间戳记,并拒绝所有后续的API请求,在此有效期后。
  要启用此功能,将以下参数添加到API请求:
  •signatureVersion = 3:如果signatureVersion参数丢失或不等于3,在到期的API请求参数将被忽略。
  •expires=YYYY-MM-DDThh:mm:ssZ:指定在哪些包含在请求中的签名已过期的日期和时间。时间戳表示YYYY-MM-DDTHH:MM:SSZ格式,ISO 8601标准中规定的。例子如下:expires=2011-10-10T12:00:00+0530。
  下面给出了一个到期API请求示例:
  http。//<IPAddress>。8080/client/api?
  command=listZones&signatureVersion=3&expires=2011-10-10T12:00:00+0530&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D%3D
  3 API 请求签名
  无论你使用HTTP还是使用HTTPS访问CloudStack API,它仍必须签署CloudStack可以验证调用者的身份验证和授权来执行命令。
  请确保你有由CloudStack管理员为您的帐户提供的API Key和Secret Key,然后再进行签名的过程。为了显示如何注册请求,我们将再次使用前面的例子。
  http。//localhost。8080/client/api?command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D
  每个API请求的格式:基本URL(Base URL)+ API路径(API Path)+命令字符串(CommandString)+签名(Signature)。
  为了生成签名(可以用以下步骤实现)。
  1.在命令字符串的每个字段的值对(由一个“&”隔开),URL解析每个值以便它可以通过HTTP GET被安全地发送。

  确保所有的空格被编码为“%20”,而不是“+”。
  2.整个命令字符串(Command String)小写字母顺序并通过字段对每个字段- 值排序。这一步的结果如下:
  apikey=mivr6x7u6bn_sdahobpjnejpgest35exqjb8cg20yi3yaxxcgpyuairmfi_ejtvwz0nukkjbpmy3y2bcikwfq&command=deployvirtualmachine&diskofferingid=1&se
  3.通过验证用户的Secret Key以排序的命令字符串(Command String)并通过HMAC SHA-1散列算法(大多数编程语言提供了一个实用的方法来做到这一点)运行它。Base64编码所产生的UTF-8字节数组可安全地通过HTTP传输。经Base64编码后产生的最后字符串应该是:
  “Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D”。
  通过以基本URL(Base URL)+ API路径(API Path)+命令字符串(CommandString)+签名(Signature)的格式重构最终的URL

如何调用cloudstacsk的API

标签:

原文地址:http://www.cnblogs.com/xiaoshi657/p/4780896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!