summaryrefslogtreecommitdiff
path: root/doc/es_ES/plugin-authentication-architecture.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'doc/es_ES/plugin-authentication-architecture.markdown')
-rw-r--r--doc/es_ES/plugin-authentication-architecture.markdown99
1 files changed, 99 insertions, 0 deletions
diff --git a/doc/es_ES/plugin-authentication-architecture.markdown b/doc/es_ES/plugin-authentication-architecture.markdown
new file mode 100644
index 00000000..86069aa0
--- /dev/null
+++ b/doc/es_ES/plugin-authentication-architecture.markdown
@@ -0,0 +1,99 @@
+Arquitectura de autenticación
+=============================
+
+Kanboard provee una flexible y conectable arquitectura de autenticación.
+
+Por default, el usuario puede autenticarse con multiple metodos:
+
+- Autenticación por usuario y password (Base de datos local y LDAP)
+- Autenticación OAuth2
+- Autenticación Reverse-Proxy
+- Autenticación basada en Cookie (Recuerdame)
+
+Además, despues de una autenticación satisfactoria un puede hacerse post de autenticación Two-Factor .
+Kanboard sopoarta nativamente el standart TOTP.
+
+Interfaces de autenticación
+----------------------------
+
+Para tener un sistema conectable, los drivers de autenticación deben implementar un conjunto de interfaces
+
+| Interface | Rol |
+|------------------------------------------|------------------------------------------------------------------|
+| AuthenticationProviderInterface | Interface base para otras interfaces de autenticación |
+| PreAuthenticationProviderInterface | The user is already authenticated al alcanzar la aplicación, Usualmente los servidores web definen algunas variables de entorno |
+| PasswordAuthenticationProviderInterface | El metodo de autenticación que usa el username y password provienen del formulario de login |
+| OAuthAuthenticationProviderInterface | Proveedores OAuth2 |
+| PostAuthenticationProviderInterface | Drivers de autenticación Two-Factor ,pide el código a confirmar |
+| SessionCheckProviderInterface | Los proveedores que son capaces de comprobar si la sesión de usuario es válida |
+
+### Ejemplos de autenticación de proveedores:
+
+- Database por default metodos a implementar `PasswordAuthenticationProviderInterface` y `SessionCheckProviderInterface`
+- Reverse-Proxy metodos a implementar `PreAuthenticationProviderInterface` y `SessionCheckProviderInterface`
+- Google metodos a implementar `OAuthAuthenticationProviderInterface`
+- LDAP metodos a implementar `PasswordAuthenticationProviderInterface`
+- RememberMe cookie metodos a implementar `PreAuthenticationProviderInterface`
+- Two-Factor TOTP metodos a implementar `PostAuthenticationProviderInterface`
+
+flujo de trabajo de autenticación ** Workflow **
+------------------------------------------------
+
+Para cada peticion HTTP:
+
+1. Si la sesión de usuario esta abierta, ejecuta el registro de proveedores que implementa`SessionCheckProviderInterface`
+2. Ejecuta todos los proveedores que implementa `PreAuthenticationProviderInterface`
+3. Si el usuario final hace un submit al formulario del login, Los proveedores que implementa `PasswordAuthenticationProviderInterface` are executed
+4. Si el usuario final quiere usar OAuth2, el selecciona el proveedor a ejecutar
+5. Despues de una autenticación satisfactoria, el ultimo registro utilizará `PostAuthenticationProviderInterface`
+6. Sincronizar la información del usuario si es necesario
+
+Este workflow es manejado por la clase `Kanboard\Core\Security\AuthenticationManager`.
+
+Eventos disparados:
+
+- `AuthenticationManager::EVENT_SUCCESS`: autenticación satisfactoria
+- `AuthenticationManager::EVENT_FAILURE`: autenticación fallida
+
+Cada vez que se produce un evento de fallo , el contador de intentos fallidos se incrementa.
+
+La cuenta de usuario se puede bloquear para el período de tiempo configurado y un captcha puede ser mostrado para evitar ataques de fuerza bruta .
+
+Interface de usuario del proveedor
+---------------------------------
+
+Cuando la autenticación es satisfactoria, la `AuthenticationManager` pedura la información del usuario para que el driver llame al metodo `getUser()`.
+Este metodo debe regresar un objeto que implementa la interface `Kanboard\Core\User\UserProviderInterface`.
+
+Esta clase abstracta reune la información dede otro sistema.
+
+Ejemplos :
+
+- `DatabaseUserProvider` proporciona información para un usuario interno
+- `LdapUserProvider` para un usuario LDAP
+- `ReverseProxyUserProvider` para un usuario Reverse-Proxy
+- `GoogleUserProvider` represtan un usuario de Google
+
+Los métodos para la interface del proveedor de Usuario:
+
+- `isUserCreationAllowed()`: Regresa true para permitir la creación automática de usuarios
+- `getExternalIdColumn()`: Obtener Identificación del nombre de la columna externa (google_id, github_id, gitlab_id...)
+- `getInternalId()`: Obtener el id interno de la base de datos
+- `getExternalId()`: Obtener el id externo(Unique id)
+- `getRole()`: Obtener el rol de usuario
+- `getUsername()`: Obtener en nombre de usuario ** username **
+- `getName()`: Obtener nombre completo del usuario
+- `getEmail()`: Obtener el correo electronico del usuario
+- `getExternalGroupIds()`: Obtiene los ids externos del grupo, automáticamente sincroniza la membresia del grupo y la presenta
+- `getExtraAttributes()`: Obtiene los atributos extras para ser mostrados a el usuario durante la sincronización local
+
+No es obligatorio que el metodo devuelva un valor.
+
+Sincronización de un usuario local
+----------------------------------
+
+La información del usuario puede ser sincronizada automáticamente con la base de datos local.
+
+- Si el metodo`getInternalId()` regresa un valor no realiza la sincronización
+- Los metodos `getExternalIdColumn()` y `getExternalId()` debe regresar un valor para sincronizar el usuario
+- Las propiedades que regresan un ** String ** vacios no se sincronizan