Saltar al contenido principal

Autenticación

Semaphore dispone de tres formas de establecer quién es una persona. Son independientes y pueden estar todas activas a la vez, de modo que la pantalla de inicio de sesión puede ofrecer un formulario de contraseña, un inicio de sesión contra el directorio y un botón por cada proveedor de identidad.

MétodoQuién verifica la contraseñaÚselo cuando
Cuentas localesSemaphore, contra su propia base de datosNo tiene un directorio, o necesita un administrador de emergencia.
LDAP y Active DirectorySu servidor de directorioLas personas ya existen en LDAP o AD y quiere un único conjunto de credenciales.
OpenID ConnectSu proveedor de identidadDispone de inicio de sesión único: Keycloak, Okta, Entra ID, Google, GitHub y otros.

La autenticación solo responde a quién es el usuario. Lo que tiene permitido hacer se decide por separado, según su rol de servidor y su rol en cada proyecto: consulte Equipos.

Cómo llega a existir el registro de un usuario

Toda persona que inicia sesión tiene una fila en la base de datos de Semaphore, sea cual sea el método que haya utilizado. Una cuenta local la crea un administrador o el comando semaphore user add. Una cuenta LDAP u OIDC se crea en el primer inicio de sesión correcto, y Semaphore almacena junto a ella una identidad externa: el ID del proveedor más el ID de usuario que ese proveedor devolvió.

Esa identidad externa es con lo que se comparan los inicios de sesión posteriores, lo que significa que renombrar a alguien en el directorio no crea una segunda cuenta. Lo que sí requiere atención es el primer inicio de sesión de un usuario existente, cuando todavía no existe ninguna identidad externa. La opción external_auth_email_matching decide qué ocurre entonces:

ValorComportamiento
auto (predeterminado)Vincula por correo electrónico, pero solo para usuarios externos que aún no tienen identidad. Esto adopta una sola vez las cuentas creadas antes de la 2.20, y nada más.
alwaysVincula por correo electrónico a cualquier usuario externo. Úselo cuando una misma persona inicia sesión a través de varios proveedores.
neverNunca vincula por correo electrónico; las identidades se comparan estrictamente por el ID del proveedor.

Las cuentas locales con contraseña nunca se comparan por correo electrónico, en ningún modo. De lo contrario, un proveedor OIDC que permita al usuario elegir su propia dirección de correo podría utilizarse para apoderarse de la cuenta de un administrador.

aviso

El ID del proveedor —la clave en oidc_providers o ldap_providers— forma parte de cada identidad almacenada. Renombrarlo deja huérfanas las identidades que lo referencian, y esos usuarios obtienen cuentas nuevas y vacías en su siguiente inicio de sesión. Elíjalo una sola vez.

Combinar métodos

Una configuración realista habilita el inicio de sesión único para las personas y conserva un administrador local para el día en que el proveedor de identidad no esté disponible:

  1. Configure el proveedor y confirme que un usuario real puede iniciar sesión a través de él.
  2. Asigne a ese usuario los roles que necesite.
  3. Conserve una cuenta de administrador local con una contraseña robusta y TOTP habilitado.
  4. Establezca password_login_disable para impedir que el resto siga usando contraseñas.

Hágalo en ese orden. Establecer password_login_disable antes del paso 1 funciona exactamente como se anuncia y le deja fuera de su propio servidor.

En esta sección

PáginaQué cubre
Cuentas localesContraseñas, TOTP, códigos de un solo uso por correo electrónico, duración de la sesión y desactivación del inicio de sesión con contraseña.
LDAP y Active DirectoryEnlace (bind) con un directorio, filtros de búsqueda, asignaciones de atributos y TLS.
OpenID ConnectConfiguración del proveedor, expresiones de claims, inicio de sesión iniciado por el IdP y doce ejemplos completos de proveedores.

Por dónde empezar

Una instalación nueva ya tiene el administrador local creado durante la configuración inicial, así que empiece por Cuentas locales para protegerlo y después añada OpenID Connect o LDAP para el resto.