Cómo llamar a la API de Cloudstacsk
Realización de solicitudes de API
Todas las solicitudes de API de CloudStack se envían como HTTP GET/POST con el comando asociado y cualquier parámetro. Ya sea en HTTP o HTTPS, la solicitud contiene lo siguiente:
L URL de la API de CloudStack: este es el punto de entrada de la API para el servicio web (por ejemplo, mand = implementarvirtualmachine & serviceOfferingId = 1 & diskoffering id = 1 & templateId = 2 & zoneId = 4 & API key = mivr 6 x 7 u 6 bjb 8cg 20 yi 3 yaxcgpyuairmfi _ ejtvwz 0 nukjbpmy 3 y2 bcikwfq & firma = lxx 1dm 40 AJC Xu % 2 fcaik 8 rap 0 o 1hU % 3D
O un ejemplo más legible es el siguiente:
1.mand=deployVirtualMachine
3.& ampserviceOfferingId=1
4.& ampdiskOfferingId= 1
5.& amptemplateId=2
6.& ampzoneId=4
7.& ampAPI key = mivr 6 x 7 u 6 bn _ sdahobpjnejpgest 35 exqjb 8cg 20 yi 3 yaxcgpyuairmfi _ ejtvwz 0 nukkjbpmy 3 y2 bcikwfq
8.& ampsignature = lxx 1dm 40 ajcxu % 2 fcaik 8 rap 0 o 1hU % 3D % 3D
Línea 1 es la URL de CloudStackAPI, que es la instancia de nube con la que desea interactuar.
La línea 2 es el comando que desea ejecutar, intentamos implementar una nueva máquina virtual. La URL de CloudStackAPI según la anterior (?)
Las líneas 3 a 6 son los parámetros de este comando. Consulte la sección correspondiente en la documentación de la API de CloudStack. Cada par de valor de campo de parámetro (campo = valor) es. separada por el carácter anterior (&;)
La línea 7 es la clave API, que puede ser única. Identifica la cuenta. Consulte Firma de solicitudes de API en la página 9.
La línea 8 es la. hash de firma creado para verificar el comando API ejecutado por la cuenta de usuario.
Consulte Firma de solicitudes de API en la página 9.
2 Habilitar la caducidad de las llamadas API
Puedes establecer la marca de tiempo de caducidad de las llamadas API para evitar ataques de repetición a través de canales inseguros (como HTTP). El servidor realiza un seguimiento de la marca de tiempo de vencimiento que usted especifica y rechaza todas las solicitudes API posteriores después de esa fecha de vencimiento.
Para habilitar esta función, agregue los siguientes parámetros a la solicitud de API:
SignatureVersion = 3: si falta el parámetro de versión de firma o no es igual a 3, los parámetros de solicitud de API vencidos ser ignorado.
Expires=AAAA-MM-DDThh:mm:ssZ: Especifica la fecha y hora en que caduca la firma incluida en la solicitud. La marca de tiempo indica el formato aaaa-mm-ddthh: mm: SSZ, que se especifica en el estándar ISO 8601. El ejemplo es el siguiente: Expires = 2011-10-10t 12:00:00530.
A continuación se proporciona un ejemplo de una solicitud de API caducada:
Área de lista. inversión de firma = 3 & expira = 2011-10-10t 12:00:00530 & clave API = mivr 6 y2 bcikwfq & firma = lxx 1dm 40 ajcxu % 2 fcaik 8 rap 0 o 1hU % 3D % 3D
Firma de solicitud de 3 API
Ya sea que esté utilizando HTTP o HTTPS para acceder a la API de CloudStack, aún debe firmar CloudStack para verificar la autenticación y autorización de la persona que llama para ejecutar el comando.
Asegúrese de tener la clave API y la clave proporcionada por su administrador de CloudStack para su cuenta antes de iniciar sesión. Para ilustrar cómo registrar una solicitud, usaremos nuevamente el ejemplo anterior.
Implementar máquinas virtuales. serviceOfferingId = 1 & diskoffering id = 1 & templateId = 2 & zoneId = 4 & API key = mivr 6 x 7 u 6 bjb 8cg 20 yi 3 yaxcgpyuairmfi_ejtvwz 0 nukjbpmy 3 y2 bcikwfq & firma = lxx 1dm 40 AJC Xu % 2 fcaik 8 rap 0 o 1hU % 3D
El formato de cada solicitud API: URL base+ruta API)+CommandString)+firma.
Para generar una firma (esto se puede lograr siguiendo los pasos a continuación).
1. Pares de valores en cada campo de la cadena de comando (representados por separación "&"), la URL analiza cada valor para que pueda enviarse de forma segura a través de HTTP GET.
Asegúrate de que todos los espacios estén codificados como "%20" y no como "+".
2. Toda la cadena de comando está organizada en orden alfabético en minúsculas y cada valor de campo está ordenado por campo. El resultado de este paso es el siguiente:
Clave API = mivr 6 = 1&Se
3. Validando la clave del usuario, ejecutándola en una cadena de comando ordenada y pasando. a través del algoritmo hash HMAC SHA-1 (la mayoría de los lenguajes de programación proporcionan una forma práctica de lograrlo). La matriz de bytes UTF-8 generada por la codificación Base64 se puede transmitir de forma segura a través de HTTP. La cadena final generada después de la codificación Base64 debe ser:
lxx 1dm 40 ajcxu % 2 fcaik 8 rap 0 o 1hU % 3D.
La URL final se basa en la URL base+API ruta) + CommandString)+ Reconstrucción del formato de firma.