我在网络服务器(带有IIS的Windows)上设置了ArangoDB,并打算通过IIS将反向代理暴露给Web,但我希望客户端被强制使用身份验证。我无法通过所需的身份验证找到访问FOXX服务的方法。
我添加了一个数据库'common'并在
中安装了FOXX服务versioning/version/{project}/{client}/{version}
我可以使用浏览器中的服务使用
这样的网址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
但无法弄明白。我是在尝试不可能的事情,还是错过了明显的事情?
答案 0 :(得分:0)
您需要调整端点以包含ip,即myiisserver.com。如果您想在服务器的所有接口和地址上公开arangodb,请尝试endpoint = tcp://0.0.0.0:8529/
或endpoint = tcp://[::]:8529/
。后者还将包括ipv6地址。如果您只想添加myiisserver.com
,只需为myiisserver.com
的IP地址添加一行。像
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]
,反之亦然。
答案 1 :(得分:0)
我已经弄明白问题是什么。 ArangoDB 3.1 documentation for Authentication说
启用身份验证
...
如果您想在没有HTTP身份验证的情况下运行Foxx应用程序,请激活 对于内置服务器API的HTTP身份验证,您可以添加 配置的服务器部分中的以下行:
authentication-system-only = true
...
所以我按照以下方式编辑'arangod.conf'后才开始工作:
authentication = true
authentication-system-only = false