Problema de credenciales expuestas en n8n con odoo y su api jsonrpc
Solución a credenciales estáticas o expuestas en n8n para requests a jsonrpc de odoo
Objetivo:
Ocultar las credenciales de odoo en flujos de trabajo de n8n y al mismo tiempo poder hacer requests dinámicos.
Contexto:
Hace unos años que me dedico a dessarrollar e implementar odoo de manera profesional. Me ascendieron a lider técnico en automatización de procesos con IA y administro y sigo los proyectos. Actualmente estoy automatizando y creando agentes con n8n, pero me tope con el problema de que no hay nodos suficientes para odoo, y si quería hacer requests personalizados, las credenciales debían quedar en el nodo http, o tenía que armar una credencial custom auth para cada tipo de request a odoo.
Lo que intentaba hacer:
Mi problema era que quería personalizar los request en n8n utilizando las credenciales custom e insertarla en el body del nodo http para comunicarme a cualquier modelo en odoo. Después de horas que quebrarme la cabeza probando e investigando sin resultado alguno, se me ocurrió insertar valores dinámicos a las credenciales custom auth y hacer el request con el body formateado para jsonrpc.
El resultado:
Pude ocultar las credenciales para mantener la seguridad en los flujos de trabajo y a la vez pude hacer requests dinámicos.
Dejo capturas de como se ve una credencial con el flujo:
Credencial Custom auth:
{
"body":{
"jsonrpc": "{{ $('params_jsonrpc3').item.json.jsonrpc }}",
"method": "call",
"id": "{{ $('params_jsonrpc3').item.json.id }}",
"params": {
"service": "{{ $('params_jsonrpc3').item.json.service }}",
"method": "{{ $('params_jsonrpc3').item.json.method }}",
"args": [
"-------DB_NAME-------",
-------RES_USER_ID-------,
"-------API_KEY-------",
"{{ $('params_jsonrpc3').item.json.model }}",
"{{ $('params_jsonrpc3').item.json.crud_type }}",
{{ $('params_jsonrpc3').item.json.record_ids.toJsonString() }},
{
"context": {{ $json.context.toJsonString() }}
}
]
}
}
}

