Introducción
A pesar de que el proceso de instalación utilizando AHORA Install es sumamente sencillo, siempre existe la posibilidad de modificar manualmente la configuración de la API cambiando los parámetros del fichero json contenido en la carpeta del servicio.
DATO: AHORA API se instala como servicio de Windows, la modificación del fichero de configuración requiere reiniciar el mismo desde el panel de control de Servicios de Windows para refrescar los nuevos parámetros.
Configuración
La configuración de la API se limita a editar un fichero JSON (appsetings.json) que se puede encontrar en la propia carpeta.
{ "hosturl": "http://192.168.1.1:8080", "Data": { "Server": "SERVIDORSQL", "Database": "DATABASE", "User": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=", "Password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=" }, "ApiAuth": { "Audience": "api" } }
Analizando el fichero de configuración vemos los siguientes campos:
- hosturl: es la url del servicio, es decir, la dirección y puerto sobre el que se van a escuchar las peticiones HHTP contra la API.
- Data: datos de acceso al servidor y base de datos central sobre la que se monta la API. El usuario y el password deben estar encriptados por mayor seguridad.
- ApiAuth: clave que usa swagger para validar las peticiones a la API.
IMPORTANTE: El fichero de configuración es un fichero json, hay que tenerlo en cuenta a la hora de introducir los datos de configuración. Hay ocasiones en las que el nombre del servidor contiene el carácter "\" como separador de la instancia, y este mismo carácter es el de escape de json. En estos casos es necesario antecederlo con el mismo carácter quedando el nombre del servidor de la siguiente manera "Server": "SERVIDORSQL\\Instancia"
Como hemos visto el usuario y el password deben de estar encriptados, pero es el propio proceso de instalación de la API la que conforma este fichero y añade el usuario y password encriptados.
IMPORTANTE: La elección del puerto asociado a la URL no es algo trivial, dependiendo del valor elegido podríamos tener problemas con la configuración de seguridad por defecto de los navegadores, llegando a bloquear las llamadas a la API.
IMPORTANTE: Es necesario tener en cuenta que el usuario de conexión a la base de datos debe tener permisos no sólo de lectura, también debe poder llevar a cabo determinadas acciones como cambios de contexto de la sesión. Es recomendable utilizar un usuario con permisos de administración.
Parámetros
Con el fin de poder modificar el usuario y password de conexión a la base de datos, se ha habilitado un nodo en AHORA API para encriptar cadenas a través de una llamada HTTPGet. El proceso es tan sencillo como, una vez levantada la API, copiar la siguiente URL en el navegador http://servidor:puerto/api/utils/encriptar?cadena=NomUsuario sustituyendo los valores de servidor y puerto por los configurados previamente en el fichero json, y la cadena a encriptar por el nombre de usuario (y por el password en una segunda llamada). Una vez introducidos los valores devueltos en el fichero de configuración, reiniciando la API ya estará totalmente configurada.
En caso de usar este método de encriptación es necesario tener en cuenta que existen una serie de caracteres reservados que no se pueden utilizar directamente como, por ejemplo, #, &, %, $ etc. En caso de que la cadena a encriptar (usuario o password) contenga alguno de los caracteres incluidos en la siguiente tabla, deberá sustituirse por el valor indicado.
␣ | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | : | ; | < | = | > | ? | @ | [ | \ | ] | { | | | } |
%20 | %21 | %22 | %23 | %24 | %25 | %26 | %27 | %28 | %29 | %2A | %2B | %2C | %2D | %2E | %2F | %3A | %3B | %3C | %3D | %3E | %3F | %40 | %5B | %5C | %5D | %7B | %7C | %7D |
Ejemplo:
si el password de la base de datos es algo del estilo us#ario&123 la llamada al método de encriptación debería hacerse de la siguiente manera:
http://servidor:puerto/api/utils/encriptar?cadena=us%23ario%26123