0

我在网络服务器(带有 IIS 的 Windows)上设置了一个 ArangoDB,并打算通过 IIS 使用反向代理将其公开给网络,但我希望客户端被迫使用身份验证。我找不到通过所需身份验证访问 FOXX 服务的方法。

我添加了一个数据库'common'并安装了一个 FOXX 服务

versioning/version/{project}/{client}/{version}

我可以在浏览器中使用类似的 URL 来使用该服务

http://127.0.0.1:8529/_db/common/versioning/version/myproject/aclient/4.9.3

它返回我请求的 JSON。但它从不要求我提供凭据。因此,如果我通过 IIS 公开此服务,例如:

https://myiisserver.com/_db/common/versioning/version/myproject/aclient/4.9.3

访问服务没有限制!

arangod.conf 看起来像这样(实际上没有改变)

endpoint = tcp://127.0.0.1:8529
...
authentication = true

那么我做错了什么?我是否只使用内部端点?有公开的吗?我尝试了各种组合:

https://myiisserver.com/_db/common/_api/versioning/version/myproject/aclient/4.9.3
https://myiisserver.com/versioning/version/myproject/aclient/4.9.3

但无法弄清楚。我是在尝试不可能的事情,还是错过显而易见的事情?

4

2 回答 2

0

您需要调整端点以包含 ip,即 myiisserver.com。如果您想在服务器的所有接口和地址上公开 arangodb,请尝试endpoint = tcp://0.0.0.0:8529/or endpoint = tcp://[::]:8529/。后者还将包括 ipv6 地址。如果您只想添加myiisserver.com,只需为 的 ip 地址添加一行myiisserver.com。所以像

endpoint = tcp://127.0.0.1:8529
endpoint = tcp://<ip-address-of-myiisserver.com>:8529
...
authentication = true

如果您想使用 FQDN,请确保nslookup myiisserver.com服务器和外部世界解析到相同的 IP 地址。换句话说,确保它myiisserver.com不会解析为127.0.0.1, 127.0.1.1[::1]反之亦然。

于 2017-04-26T07:17:34.303 回答
0

我已经弄清楚了问题所在。用于身份验证的ArangoDB 3.1 文档

开启身份验证

...

如果您想在没有 HTTP 身份验证的情况下运行 Foxx 应用程序,但为内置服务器 API 激活 HTTP 身份验证,您可以在配置的服务器部分添加以下行:

仅身份验证系统 = true

...

所以我在以下列方式编辑我的“arangod.conf”后使它工作:

authentication = true

authentication-system-only = false
于 2017-04-27T13:28:52.370 回答