Saltar al contenido principal

LDAP y Active Directory

El archivo de configuración contiene los siguientes parámetros de LDAP:

{
"ldap_binddn": "cn=admin,dc=example,dc=org",
"ldap_bindpassword": "admin_password",
"ldap_server": "localhost:389",
"ldap_searchdn": "ou=users,dc=example,dc=org",
"ldap_searchfilter": "(&(objectClass=inetOrgPerson)(uid=%s))",
"ldap_mappings": {
"dn": "",
"mail": "uid",
"uid": "uid",
"cn": "cn"
},
"ldap_enable": true,
"ldap_needtls": false,
}

Todas las opciones del proveedor de SSO:

ParámetroVariables de entornoDescripción
ldap_binddnSEMAPHORE_LDAP_BIND_DNNombre del objeto de usuario LDAP para el enlace (bind).
ldap_bindpasswordSEMAPHORE_LDAP_BIND_PASSWORDContraseña del usuario LDAP definido en el Bind DN.
ldap_serverSEMAPHORE_LDAP_SERVERHost del servidor LDAP, incluido el puerto. Por ejemplo: localhost:389.
ldap_searchdnSEMAPHORE_LDAP_SEARCH_DNÁmbito en el que se buscarán los usuarios. Por ejemplo: ou=users,dc=example,dc=org.
ldap_searchfilterSEMAPHORE_LDAP_SEARCH_FILTERExpresión de búsqueda de usuarios. Valor predeterminado: (&(objectClass=inetOrgPerson)(uid=%s)), donde %s se sustituirá por el nombre de usuario introducido.
ldap_mappings.dnSEMAPHORE_LDAP_MAPPING_DN
ldap_mappings.mailSEMAPHORE_LDAP_MAPPING_MAILExpresión de claim del correo electrónico del usuario*.
ldap_mappings.uidSEMAPHORE_LDAP_MAPPING_UIDExpresión de claim del nombre de usuario (login)*.
ldap_mappings.cnSEMAPHORE_LDAP_MAPPING_CNExpresión de claim del nombre del usuario*.
ldap_enableSEMAPHORE_LDAP_ENABLELDAP habilitado.
ldap_needtlsSEMAPHORE_LDAP_NEEDTLSConectar al servidor LDAP mediante SSL.

*Expresión de claim

Ejemplo de expresión de claim:

email | {{ .username }}@your-domain.com

Semaphore intenta obtener primero el campo email. Si está vacío, se evalúa la expresión que le sigue.

La expresión "username_claim": "|" genera un username aleatorio para cada usuario que inicia sesión a través del proveedor.

Solución de problemas

Utilice la herramienta ldapwhoami para comprobar si su BindDN funciona: Esta herramienta la proporciona el paquete openldap-clients.

ldapwhoami\
-H ldap://ldap.com:389\
-D "CN=your_ldap_binddn_value_in_config"\
-x\
-W

Solicitará la contraseña de forma interactiva y debería devolver el código 0 y mostrar el DN especificado.

Consulte la sección Solución de problemas si tiene problemas con LDAP.

Ejemplo: uso de un servidor OpenLDAP

Ejecute el siguiente comando para iniciar su propio servidor LDAP con una cuenta de administrador y un usuario adicional:

docker run -d --name openldap \
-p 1389:1389 \
-p 1636:1636 \
-e LDAP_ADMIN_USERNAME=admin \
-e LDAP_ADMIN_PASSWORD=pwd \
-e LDAP_USERS=user1 \
-e LDAP_PASSWORDS=pwd \
-e LDAP_ROOT=dc=example,dc=org \
-e LDAP_ADMIN_DN=cn=admin,dc=example,dc=org \
bitnami/openldap:latest

Su configuración de LDAP para Semaphore UI debería ser la siguiente:

{
"ldap_binddn": "cn=admin,dc=example,dc=org",
"ldap_bindpassword": "pwd",
"ldap_server": "ldap-server.com:1389",
"ldap_searchdn": "dc=example,dc=org",
"ldap_searchfilter": "(&(objectClass=inetOrgPerson)(uid=%s))",
"ldap_mappings": {
"mail": "{{ .cn }}@ldap.your-domain.com",
"uid": "|",
"cn": "cn"
},
"ldap_enable": true,
"ldap_needtls": false
}

Para ejecutar Semaphore en Docker, utilice la siguiente configuración de LDAP:

docker run -d -p 3000:3000 --name semaphore \
-e SEMAPHORE_DB_DIALECT=bolt \
-e SEMAPHORE_ADMIN=admin \
-e SEMAPHORE_ADMIN_PASSWORD=changeme \
-e SEMAPHORE_ADMIN_NAME=Admin \
-e SEMAPHORE_ADMIN_EMAIL=admin@localhost \
-e SEMAPHORE_LDAP_ENABLE=yes \
-e SEMAPHORE_LDAP_SERVER=ldap-server.com:1389 \
-e SEMAPHORE_LDAP_BIND_DN=cn=admin,dc=example,dc=org \
-e SEMAPHORE_LDAP_BIND_PASSWORD=pwd \
-e SEMAPHORE_LDAP_SEARCH_DN=dc=example,dc=org \
-e 'SEMAPHORE_LDAP_SEARCH_FILTER=(&(objectClass=inetOrgPerson)(uid=%s))' \
-e 'SEMAPHORE_LDAP_MAPPING_MAIL={{ .cn }}@ldap.your-domain.com' \
-e 'SEMAPHORE_LDAP_MAPPING_UID=|' \
-e 'SEMAPHORE_LDAP_MAPPING_CN=cn' \
semaphoreui/semaphore:latest