Instalar un servidor de videoconferencia libre, Jitsi Meet (III, Autenticación de asistentes con LDAP)

Posiblemente uno de los motivos de mayor peso para instalar una instancia propia de Jitsi Meet es poder controlar/limitar quien accede a ella. Veremos en este artículo como requerir autenticación a los usuarios que se conectan usando LDAP para ello.

Autenticación de usuarios con LDAP (PAM, SQL, …)

Existen varias alternativas para la autenticación de usuarios con LDAP: mod_auth_ldap, mod_auth_ldap2 y el elegido por Jitsi en su paquetería: cyrus. Cyrus es una implementación del estándar SASL que abstrae el servicio de autenticación (LDAP en este caso) del consumidor del mismo (Prosody), por lo que en realidad usando SASL podríamos usar cualquier tipo de «backend» para validar usuarios (PAM, SQL,…). Los cambios necesarios en la configuración de nuestro VirtualHost principal (EXAMPLE.NET) serían:

Donde dice:
  authentication = "anonymous"

Dirá:
  authentication = "cyrus"
  cyrus_application_name = "xmpp"
  allow_unencrypted_plain_auth = true

Además añadiremos está línea en el bloque "modules_enabled":
  "auth_cyrus";

La opción cyrus_application_name indicará la configuración a usar por saslauthd para autenticar los usuarios. Mientras que la opción allow_unencrypted_plain_auth = true permite un mecanismo de autenticación inseguro (claves en claro) que sospecho es necesaria para dar soporte al cliente (javascript) de Jitsi Meet que no soporta otros mecanismos SASL como CRAM-MD5 o GSSAPI. Si configurasteis c2s_require_encryption = true, no debería ser un problema. En otro caso podrían viajar contraseñas en claro entre el servidor web y Prosody.

Lo siguiente será configurar saslauthd para prestar servicio a Prosody. Para ello instalaremos los siguientes paquetes (o sus correspondientes en distribuciones no Debian):

apt install sasl2-bin libsasl2-modules-ldap lua-cyrussasl

En el fichero de configuración de arranque de saslauthd (/etc/default/saslauthd) activaremos el arranque y configuraremos LDAP como «backend» para la autenticación:

START=yes
MECHANISMS="ldap"

Luego editaremos la configuración LDAP del saslauthd (/etc/saslauthd.conf). Por ejemplo para usar Autenticación Simple (conectar con el servidor LDAP usando las credenciales proporcionadas por el cliente):

ldap_servers: ldaps://IP_O_NOMBRE_SERVIDOR_LDAP/
ldap_search_base: ou=people,dc=EXAMPLE,dc=NET
ldap_filter: (uid=%u)
ldap_version: 3
ldap_auth_method: bind

Por último crearemos el fichero de configuración SASL para el servicio xmpp, el nombre de este fichero debe coincidir con el especificado en Prosody como cyrus_application_name. En este caso será /etc/sasl/xmpp.conf y su contenido será:

pwcheck_method: saslauthd
mech_list: PLAIN

Además debemos añadir al usuario prosody en el grupo sasl para que tenga acceso al socket de comunicación con el demonio saslauthd (en /run/saslauthd/):

# adduser prosody sasl

Después de editar todos estos ficheros será necesario reiniciar tanto Prosody como saslauthd:

# systemctl restart saslauthd
# systemctl restart prosody

Antes de seguir, os recomiendo que probéis al menos el funcionamiento de saslauthd para que en caso de problemas de autenticación podamos descartar esa parte. Un simple comando valdrá:

# testsaslauthd -u USUARIO -p CLAVE -f /var/run/saslauthd/mux

Sí, lo sé… contraseñas en línea de comando. No hay nada perfecto. Si pasamos la prueba, podemos seguir con la configuración.

Desde este momento, todos los usuarios tendrán que autenticarse para unirse a una conferencia. Pero es posible que también deseemos que usuarios anónimos se unan (a una sala creada), dejando la autenticación como requisito para crear una sala nueva y dar privilegios de moderador.

Dejar unirse, como invitados, a usuarios no autenticados (Secure Domain)

Tendremos hacer unos cambios en Jitsi Meet, Prosody y Jicofo para que los usuarios anónimos entren bajo un Virtualhost diferente en Prosody. Empezando por Prosody, añadiremos lo siguiente a nuestro fichero de configuración:

VirtualHost "invitados.EXAMPLE.NET"
  authentication = "anonymous"
  c2s_require_encryption = false

Como vemos, en este Virtualhost no hay autenticación. Luego habrá que informar a Jitsi Meet de este dominio para los usuarios que no se autentican. En su fichero de configuración (/etc/jitsi/meet/EXAMPLE.NET-config.js):

# Descomentar la siguiente línea:
anonymousdomain: 'invitados.EXAMPLE.NET',

Por último habrá que decirte a Jicofo (encargado de la creación de salas) que sólo los usuarios de nuestro dominio con autenticación pueden crear salas/ser moderadores. En /etc/jitsi/jicofo/sip-communicator.properties:

# Añadir la línea
org.jitsi.jicofo.auth.URL=XMPP:EXAMPLE.NET

No olvidéis reiniciar Prosody y Jicofo después de todos estos cambios. En próximas entregas hablaré de la configuración del resto de componentes y de la autenticación con tokens, que permite una integración con aplicaciones de terceros como Moodle.
$ exit

12 comentarios en “Instalar un servidor de videoconferencia libre, Jitsi Meet (III, Autenticación de asistentes con LDAP)

  1. pancho horrillo

    Muy chulo el artículo, agi!

    Aquí va una idea fácil de usar para evitar escribir la contraseña en el CLI (que puede quedar en el `.bash_history` y se ve fugazmente en la tabla de procesos).

    Cambiando:
    `# testsaslauthd -u USUARIO -p CLAVE -f /var/run/saslauthd/mux`
    por
    `# testsaslauthd -u USUARIO -p $(cat) -f /var/run/saslauthd/mux`
    nos permite escribir la contraseña (o pegarla), pulsar `CTRL-D` dos veces, o bien `Return` y luego `CTRL-D`, y a volar! 🙂

    Para probarlo:

    `$ echo password: $(cat)`

    Hope that it helps. Keep’em coming!!!

    Responder
  2. Martin

    Quiero grabar las reuniones en forma local pero me sale error, a menos que necesite un servidor secundario para esto.
    Saludos

    Responder
  3. Jean Carlo

    buenas noches instale jitsi en un servidor pero al momento de conectarse dos o mas personas sale un mensaje de error

    «DESAFORTUNADAMENTE ALGO SALIO MAL ESTAMOS TRATANDO DE ARREGLAR ESO Y BOTAN A LOS INVITADOS»

    Agradezco de antemano la ayuda prestada

    Responder
    1. Alberto Gonzalez Iniesta Autor

      Hola, Jean Carlo. Hay un problema con la configuración del videobridge. Deberías mirar los logs del mismo (jvb.log) y del Jicofo (jicofo.log). Los motivos pueden ser varios. Con más de dos personas es cuando el videobridge es necesario para funcionar.

      Responder
      1. adminservidores

        Hola colega, no se que pasa, pero veo que Jitsi tiene una actualizacion, antes cuando la instalaba todo andaba bien, pero ahora se me presenta esta misma falla, revice esos ficheros pero son puros archivos jar, tengo ese mismo problema, mas de 1 persona tumba la videoconferencia.. no entiendo, yo no le configuro seguridad al sitio, solo lo instalo para las video conferencias

        que puede ser lo que este fallando

        Responder
  4. juan pablo

    Amigo, hasta acá me lo hace todo bien –> testsaslauthd -u USUARIO -p CLAVE -f /var/run/saslauthd/mux
    El tema es que al ingresar a la web, no me pide la autenticación en ningún momento, y al momento de dirigirme al mi perfil solo me deja poner usuario y mail. Y al crear una sala me queda todo en negro. Cuales son los pasos correctos?
    En caso de no tener usuario invitados tengo que añadir esta linea?
    org.jitsi.jicofo.auth.URL=XMPP:EXAMPLE.NET (la añadi para ver si era eso el error pero sigue igual)
    El example.net es el dominio del ldap o es el meet.miempresa.net.ar

    Responder
  5. Luis Arturo Paredes

    Hola mucho gusto quisiera ver si me puedes dar un ejemplo de como debe quedar configurado el archivo /etc/jitsi/videobridge/sip-communicator.properties yo lo instale en una máquina virtual con virtualbox pero cuando ingreso a una sala me dice que no se logro conectar a la red.

    Saludos

    Responder
    1. Alberto Gonzalez Iniesta Autor

      Hola, Luis. Temo que no hay un fichero de configuración universal. Lo mejor que puedes hacer es revisar los logs, especialmente los de prosody y los de jicofo. Es donde vas a encontrar el motivo de tu problema casi seguro. En cualquier caso en este artículo tienes un fichero de configuración de ejemplo. Saludos!

      Responder

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *