9

我已经看到了如何使用 arangosh 对数据库进行身份验证的示例,但是我在文档中找不到任何关于如何通过 http API 进行身份验证的内容。这可能吗?是这样的吗:

http://用户名:passwd@arangouri.com:8529/_api/document

4

3 回答 3

6

好的,在 Windows 上的 Arango DB 中使用身份验证后,我发现了以下内容:

我无法让这个命令工作(应该启用身份验证)

--server.disable-authentication false

更新:我意识到我无法让这个命令工作,因为它根本不是一个命令:-o 在仔细查看文档之后,它是一个命令行选项。它应该在您启动 arangosh 时使用。请参阅此处的文档

我假设我需要以某种方式对其进行调整以在 Windows 命令提示符下工作,但我不确定需要更改什么。作为解决方法,我打开了文件“arangod.conf”(我在这里找到它 C:\Program Files (x86)\ArangoDB 1.4.7\etc\arangodb)并更改了以下行:

disable-authentication = yes

disable-authentication = no

当我重新启动 Arango 时,这启用了身份验证。耶!

现在通过 http 进行身份验证...非常简单。这只是基本的 HTTP 身份验证。所以就我而言,我使用 NodeJS 和请求库进行身份验证。下面的两个示例都可以正常工作。

附加 .auth 的凭证:

request({
    url:'http://localhost:8529/_api/document/example/20214484',
    json: true
}, function (err, data){
    console.log(err);
    if (data.body.error) console.log("ERROR: " + data.body.errorMessage);

    console.log(data.body);
}).auth("username", "password");

或在 url 中使用凭据:

request({
    url:'http://username:password@localhost:8529/_api/document/example/20214484',
    json: true
}, function (err, data){
    console.log(err);
    if (data.body.error) console.log("ERROR: " + data.body.errorMessage);

    console.log(data.body);
});
于 2014-02-03T15:57:09.940 回答
6

在命令行中,您可以执行以下操作将 HTTP 基本身份验证传递给服务器:

curl --basic --user "username:passwd" -X GET http://arangouri.com:8529/_api/document/...

上面的例子是针对 curl 的。如果您使用任何其他 HTTP 客户端,则必须找到用于设置 HTTP 基本身份验证的用户名/密码的选项并将它们发送到服务器。

于 2014-01-30T17:40:03.837 回答
2

它是通过Authorization标头完成的,您可以在其中设置身份验证机制(例如 Basic),然后是格式的 base64 编码字符串[username]:[password]。例如,可以在此处找到更多信息。

于 2014-01-30T17:36:09.410 回答