首页 > 解决方案 > quacamole javascript客户端http隧道正在连接

问题描述

鳄梨酱 1.2.0

我有一个正在运行的 guac 服务器,我想从不同域上的另一个 Web 应用程序创建一个客户端连接(用于测试),并在生产准备好后移动到同一个域。我已经尝试过 HTTPTunnel 和 websockettunnel,两者都因不同的原因而失败。即使我提供了 guac 服务器和 HTTP 隧道的完整 URL,Websocket 似乎也只想在 localhost 上连接到自身,我收到有关 InvalidAllowCredentials 的 CORS 错误。以下是我尝试过的两种变体,其余的 html 来自 guac doc 网站上的示例。

var guac = new Guacamole.Client(
    new Guacamole.HTTPTunnel("https://example.com/tunnel", true)
    {#new Guacamole.WebSocketTunnel("https://example.com/websocket-tunnel", true)#}
);

如果此连接正常工作,我相信我缺少配置和身份验证信息。

guac 文档似乎缺少,我不确定我应该做什么。

需要做什么才能连接到现有机器?

例子。

API 调用,验证用户并获取令牌。API调用,搜索连接创建隧道,以某种方式传递连接客户端连接

这应该会弹出远程机器的显示。

在 location / 部分下的 nginx 配置中添加的标头

add_header 'Access-Control-Allow-Origin' 'http://127.0.0.1:8000' always;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,ContentType,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;

标签: guacamole

解决方案


您可以在文件中检查如何在 guacamole 客户端应用程序中建立连接ManagedClient.js。搜索函数getInstance()getConnectString()

原则上,您对令牌是正确的,您可以通过此 API 调用获得一个:

curl 'https://guacamole.example.com/guacamole/api/tokens' -H 'Content-Type: application/x-www-form-urlencoded' --data-raw 'username=guacadmin&password=somePassword'

un/pw 用于鳄梨酱,而不是远程机器。

获得令牌后,您可以创建HTTPTunnelClient填充参数,如中所示getConnectString()和启动connect()。请记住,远程机器的凭据是在 Guacamole 端设置的。在 中getConnectString(),您只选择在 Guacamole 服务器上定义的连接之一。

请注意,根据实际用于认证的插件,可能会发送不同的数据;您还可以使用完全不同的身份验证制作自己的身份验证插件,或者制作一个直接从 JS 代码发送远程机器凭据的插件。扩展目录中的几个示例身份验证插件;以上假设您使用的是默认的数据库身份验证插件或文件身份验证插件。


推荐阅读