Autenticación¶
Resumen¶
Esta página explica el método de autenticación de AppAPI para las ExApps, basado en un secreto compartido: el flujo de validación de una solicitud, las cabeceras que debe llevar, el atributo AppAPIAuth y la clave de sesión que AppAPI establece tras autenticar. Está dirigida a quienes desarrollan ExApps.
Fuente: documentación de Nextcloud, «developer_manual/exapp_development/tech_details/Authentication», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
AppAPI introduce un método de autenticación propio para las apps externas. Esta autenticación se basa en un secreto compartido entre APS Conecta Gestión y la app externa.
Flujo de autenticación¶
La ExApp envía una solicitud a APS Conecta Gestión
APS Conecta Gestión pasa la solicitud a AppAPI
AppAPI valida la solicitud (ver el flujo de autenticación en detalle)
La solicitud se acepta o se rechaza
Cabeceras de autenticación¶
Cada solicitud de una ExApp a una API protegida con AppAPIAuth debe contener las siguientes cabeceras:
AA-VERSION- versión mínima de AppAPIEX-APP-ID- ID de la ExAppEX-APP-VERSION- versión de la ExAppAUTHORIZATION-APP-API-userid:secretcodificado en base64
Flujo de autenticación en detalle¶
El diagrama de secuencia de esta sección muestra el orden de las comprobaciones: APS Conecta Gestión rechaza la solicitud si falta la cabecera AUTHORIZATION-APP-API o si AppAPI no existe o está deshabilitada; AppAPI la rechaza si la ExApp no existe o está deshabilitada o si el secreto compartido no coincide, comprueba que el usuario no esté vacío y esté activo y establece el usuario activo; APS Conecta Gestión responde con 200 o 401.
AppAPIAuth¶
AppAPI proporciona un atributo AppAPIAuth con un middleware para validar las solicitudes de las ExApps.
En los controladores de la API se puede usar como atributo de PHP.
Claves de sesión de AppAPI¶
Tras una autenticación correcta, AppAPI establece la clave de sesión app_api en true.
$this->session->set('app_api', true);
Nota
El servidor de APS Conecta Gestión verifica esta clave de sesión y permite omitir la protección CORS y la autenticación de dos factores en las solicitudes que provienen de las ExApps. Además, el límite de tasa no se aplica a las solicitudes que provienen de las ExApps.