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

  1. La ExApp envía una solicitud a APS Conecta Gestión

  2. APS Conecta Gestión pasa la solicitud a AppAPI

  3. AppAPI valida la solicitud (ver el flujo de autenticación en detalle)

  4. 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:

  1. AA-VERSION - versión mínima de AppAPI

  2. EX-APP-ID - ID de la ExApp

  3. EX-APP-VERSION - versión de la ExApp

  4. AUTHORIZATION-APP-API - userid:secret codificado 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.