通过HTTP进行ArangoDB身份验证

ski*_*joe 7 authentication http arangodb

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

HTTP://用户名:passwd@arangouri.com:8529/_api /文件

stj*_*stj 5

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

curl --basic --user "username:passwd" -X GET http://arangouri.com:8529/_api/document/...
Run Code Online (Sandbox Code Playgroud)

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


ski*_*joe 5

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

我无法使用此命令(应该启用身份验证)

--server.disable-authentication false
Run Code Online (Sandbox Code Playgroud)

更新:我意识到我无法使用此命令,因为它根本不是命令:-o在仔细查看文档后,它是一个命令行选项.它应该在你开始arangosh时使用.见这里的文档.

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

disable-authentication = yes
Run Code Online (Sandbox Code Playgroud)

disable-authentication = no
Run Code Online (Sandbox Code Playgroud)

这在我重新启动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");
Run Code Online (Sandbox Code Playgroud)

或者使用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);
});
Run Code Online (Sandbox Code Playgroud)