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
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!!!
Excelente post. Esperando ya la autenticación con «tokens» para integrar con moodle.
Un saludo
Quiero grabar las reuniones en forma local pero me sale error, a menos que necesite un servidor secundario para esto.
Saludos
Hola, Martin. No debería ser necesario un servidor secundario, pero sin el error exacto tampoco sabría decirte mucho. Saludos
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
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.
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
Hola, con los datos que me indicas no sabría decirte cual puede ser el problema. Tienes que revisar los logs de jicofo y videobridge. Podría ser algún problema de comunicación entre ambos. Saludos!
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
Hola, El dominio en «org.jitsi.jicofo.auth.URL» es el principal de meet, el de prosody. Entiendo que en tu caso es «meet.miempresa.net.ar».
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
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!