CrateDB 无法在 HttpEndpoint 中连接到远程安全服务器

CrateDB cannot connect in HttpEndpoint to remote secure server

我已经测试 crateDB 3.3.4 几个星期了,而且我一直通过 http 中的本地主机 (127.0.0.1) 进行连接。我已经成功地在本地主机上使用 HttpEndpoint 批量导入数据。

我现在正在 https 中的云集群上进行测试。我设法打开 Chrome 并登录服务器,但我无法通过 HttpEndpoint 在 C# 中进行远程访问。

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("https://remoteServerUrl:4200/_sql");
      httpWebRequest.Method = "POST";
      httpWebRequest.Credentials = new NetworkCredential("username", "password");
      httpWebRequest.Timeout = 600000;
      httpWebRequest.ContentType = "application/json";

      using(var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
      {
        streamWriter.Write(request);
        streamWriter.Flush();
      }

      HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
      success = response.StatusCode == HttpStatusCode.OK;

当我尝试下面的代码时,我总是得到 "The underlying connection was closed: An unexpected error occurred on a send." 而在例外情况下,我看到 "Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host."

知道我做错了什么吗?我之前在我的本地主机上做过同样的事情,但没有指定凭据,而且效果很好。

这不是永久性解决方案,但出于测试目的它可以工作。我通过直接在我的 httpwebRequest.

中添加授权 Header 解决了这个问题

httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "SomeBasicauthenticationToken");

要找到要传递的身份验证令牌,只需将用户名和密码放入像这样的基本身份验证令牌生成器中: https://www.blitter.se/utils/basic-authentication-header-generator/

但是如果有人有永久的解决方案,我还是想看看它是什么。

根据您的代码示例假设您正在使用密码身份验证。永久解决方案确实是使用自动化 header.

如此处所述https://crate.io/docs/crate/reference/en/latest/admin/auth/methods.html#password-authentication-method