通过 API 访问 Apache Cloudstack 控制台代理

问题描述 投票:0回答:2

我利用 cloudstack API 来集成到 3de 派对门户中。我想通过 API 访问控制台代理,但找不到 API 方法来执行此操作。

即获取特定虚拟机的会话令牌并从我们的 3de party 门户打开 ajax 窗口。

管理服务器应该公开控制台代理以通过 API 使用,那么我假设您应该根据登录凭据获取令牌,或者通过您有权访问的特定虚拟机的 API 获取令牌。

如果有人以前做过此操作,我们将不胜感激分享与此请求相关的一些细节。

apache-cloudstack
2个回答
0
投票

查看控制台代理的源代码,我解决了这个问题:

使用与普通cloudstack api使用定义的相同的身份验证过程 - http://docs.cloudstack.apache.org/en/latest/developersguide/dev.html

使用相同的 API 密钥并使用 Cloudstack 提供的 API Secret 对请求进行签名:

控制台代理端点如下 - /console?cmd=access&vm=xxx,成功后将返回一个带有用于访问虚拟机的令牌的 Url。

测试结果 -

要求: CloudstackRequestClientFilter -> cmd=access&vm=29603248-6d8a-4582-aa9a-4d1bfb4d7714&apikey=3NRrdrhDTwggQ_oQny11dD39-XRWJxCd0dh2xqtMNShrz_jb4ZdhHtmRh7NYiOfRzLNwPcBVAfT9FHh9v 96vzg&响应=json&签名=u4c7QZNQNcN+2s3fhRNSHTyl7+Q=

回应: 帧src =“http://172.16.90.99/ajax?令牌=TCbfnguNvsHEkga3jPJEfZctqiPHTEynM6sAG2K8iIuioKHU8UU1QAWuQLHATd0dznP9vXPggHJp9km_1bmmStiD1PPKr6nZeid0NVI7kUt8_vOGkOK4vdM2 d388KFj8oA280mQ-ZjPHWPgU4gCn47nLVb-2cVxNgOijOjdgDEDj5vlqFkzz2YhcqkLt6CIVdFcAJ1g1gqvhrO530ubjLZsiQvxs_kn9X8eXMafhRm_qugu3k6lLuG38zXsK9jKN WkmqoAV2EBBZh-r6agm4dQ">

希望这有帮助,花了一些时间才解决这个问题,控制台代理的源代码可以在这里找到: https://github.com/apache/cloudstack/blob/master/server/src/main/java/com/cloud/servlet/ConsoleProxyServlet.java


0
投票

对于遇到这个问题的其他人,Apache CloudStack

createConsoleEndpoint
API 端点可以让您实现所需的结果。

API 详细信息:https://cloudstack.apache.org/api/apidocs-4.18/apis/createConsoleEndpoint.html

© www.soinside.com 2019 - 2024. All rights reserved.