Skip to Content
Menu
This question has been flagged
1 Atsakyti
2023 Rodiniai

I've discovered that Odoo allows us to authenticate via an HTTP request to the following endpoint:

http://your_odoo_instance.com/web/session/authenticate. However, you need to include specific parameters in the body of the request.


Sample body parameters:


{ "jsonrpc": "2.0", "params": { "db": "odoo_db", "login": "email", "password": "password" } }

For security reasons, I want to replace the password with my API key. I attempted to use the API key in place of the password, like so:


{ "jsonrpc": "2.0", "params": { "db": "odoo_db", "login": "email", "password": "api_key" } }

However, this approach doesn't seem to work.

My question is: Is there a way to authenticate using the API key instead of the password?

I've noticed that most API key usage is tied to CRUD operations, but I want to explore using the API key with Odoo controllers as well.

Any assistance or guidance would be greatly appreciated!

Thank you in advance to anyone who can help!

Portretas
Atmesti
Best Answer

Hi Johnny

The /web/session/authenticate​ endpoint only supports passwords This is because it's meant for browers.

See web/controllers/session.py (the magic is in the absence of 'interactive' key in the credential dict)

You should try connecting as the documentation says, using endpoint xmlrpc/2/common and calling method authenticate​. 

See base/models/res_users.py
(login+password converted to credentials by odoo/service/common.py)
(want to know more ? see _check_credentials methods, e.g. these little condition here and there "differentiating" between API keys and regular passwords)

Also: new authentication possibilities since 18.0

Portretas
Atmesti
Related Posts Replies Rodiniai Veikla
0
saus. 24
2965
4
rugp. 24
40520
1
geg. 24
1800
5
gruod. 20
10818
0
liep. 21
3564