9

I've seen examples of how to authenticate with a database using arangosh, but I couldn't find anything in the documentation about how to authenticate via the http API. Is this possible? Is it something like this:

http://username:[email protected]:8529/_api/document

3 Answers 3

6

From the command line, you can do something like this to pass HTTP basic authentication to the server:

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

The above example is for curl. If you use any other HTTP client, you have to find the options for setting the username / password for HTTP basic authentication and send them to the server.

Sign up to request clarification or add additional context in comments.

1 Comment

Ok so I should be able to just send username and password with those respective options using jQuerys Ajax function... Sounds easy enough thanks!
6

Ok, after playing around with authentication in Arango DB on Windows here is what I have found:

I could not get this command to work (which is supposed to enable authentication)

--server.disable-authentication false

UPDATE: I realized I couldn't get this command working because it's not a command at all :-o After looking more closely at the documentation it's a command line option. It should be used when you start arangosh. See documentation here.

I assume I need to adapt it somehow to work in a windows command prompt, but I'm not sure what needs to change. As a work around I opened the file "arangod.conf" (I found it here C:\Program Files (x86)\ArangoDB 1.4.7\etc\arangodb) and changed the following line:

disable-authentication = yes

to

disable-authentication = no

This enabled authentication when I restarted Arango. Yay!

Now to authenticate via http... very simple. It's just basic HTTP auth. So in my case I was using NodeJS and the request library to authenticate. Both examples below work fine.

Credentials appended with .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");

OR with credentials in 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);
});

Comments

2

It's done through Authorization header where you set authentication mechanism (e.g. Basic) followed by base64 encoded string in format [username]:[password]. More information can be found for example here.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.