Cómo llamar a la API de Cloudstacsk
Llamadas a la API de CloudStack
<1>Realización de solicitudes de API
Todas las solicitudes de API de CloudStack son HTTP GET/POST con un comando asociado y cualquier formulario de parámetros enviado. Ya sea que la solicitud se realice en HTTP o HTTPS, consta de 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=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId= 2&zoneId=4&apiKey=miVr6X7u6bjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0 nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU %2FcaiK8RAP0O1hU%3D
O un ejemplo más legible a continuación:
1. implementarMáquinaVirtual
3.
4. 2b ciKwFQ
8 . &signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D%3D
La línea 1 es la URL de la API de CloudStack con la que desea interactuar.
La línea 2 se refiere a la nube. instancia con la que desea interactuar. En nuestro caso, estamos intentando implementar una nueva máquina virtual. El comando a ejecutar está separado de la URL de CloudStackAPI por la anterior (?)
Línea 3. -6 es esto. Parámetros para el comando. Para ver los parámetros del comando y de la solicitud, consulte las secciones correspondientes en la documentación de la API de CloudStack. Cada par de valor de campo de parámetro está separado por un carácter anterior (&). clave que identifica de forma única la cuenta. Consulte Firma de solicitudes de API en la página 9.
La línea 8 es el hash de firma creado para autenticar el comando API ejecutado por la cuenta de usuario. p>
Consulte Firma de solicitudes de API en. página 9
2 Habilitar la caducidad de las llamadas API
Puede establecer una marca de tiempo de caducidad para las llamadas API para evitar repeticiones. El ataque se realiza a través de un canal no seguro, como HTTP. realiza un seguimiento de la marca de tiempo de vencimiento que especifica y rechaza todas las solicitudes de API posteriores después de esta fecha de vencimiento.
Para habilitar esta función, agregue el siguiente parámetro a la solicitud de API: SignatureVersion = 3: si falta el parámetro SignatureVersion o. no es igual a 3, se ignorará el parámetro de solicitud de API vencido. expires=AAAA-MM-DDThh:mm:ssZ: Especifica la fecha y hora en la que ha caducado la firma incluida en la solicitud. La marca de tiempo se representa en formato AAAA-MM-DDTHH:MM:SSZ, como se especifica en el estándar ISO 8601. Un ejemplo es el siguiente: expires=2011-10-10T12:00:00530.
A continuación se proporciona un ejemplo de una solicitud de API de vencimiento:
mand=listZones&signatureVersion=3&expires=2011-10-10T12:00:00530&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJ. TV wZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU% 2FcaiK8RAP0O1hU %3D%3D
3 Firma de solicitud de API
Ya sea que utilice HTTP o HTTPS para acceder a la API de CloudStack, aún debe estar firmada para que CloudStack pueda 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 secreta proporcionadas por el administrador de CloudStack para su cuenta antes de continuar con el proceso de firma. Para mostrar cómo registrar una solicitud, usaremos nuevamente el ejemplo anterior.
mand=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU % 2FcaiK8RAP0O1hU%3D
El formato de cada solicitud API: URL base (URL base) + ruta API ( Ruta API) + cadena de comando (CommandString) + firma (Signature).
Para generar una firma (puedes seguir los siguientes pasos para lograrlo).
1. Con un par de valores para cada campo en la cadena de comando (separados por un "&"), 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 (Command String) está en orden alfabético en minúsculas y ordena cada valor de campo por campo. Los resultados de este paso son los siguientes:
apikey=mivr6x7u6bn_sdahobpjnejpgest35exqjb8cg20yi3yaxxcgpyuairmfi_ejtvwz0nukkjbpmy3y2bcikwfq&command=deployvirtualmachine&diskofferingid=1&se
3. cadena de comando (cadena de comando) y pase HMAC SHA - 1 algoritmo hash (la mayoría de los lenguajes de programación proporcionan una forma práctica de hacerlo) para ejecutarlo. La matriz de bytes UTF-8 resultante de 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:
"Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D".
Reconstruir la URL final en el formato URL base + Ruta API + Cadena de comando + Firma