Che cos’è LDAP
LDAP è un protocollo di autenticazione usato per la verifica dell’identità esterna. Overleaf Server Pro offre nell’interfaccia web un modulo di accesso LDAP dedicato, separato dal metodo di autenticazione standard. Quando un utente invia il proprio nome utente e la propria password LDAP, il backend di Overleaf verifica le credenziali sul server LDAP configurato, ad esempioldap://ldap:10389.

Un esempio di LDAP in Server Pro
Configurazione
Internamente, l’LDAP di Overleaf usa la libreria passport-ldapauth. La maggior parte di queste opzioni di configurazione viene passata all’oggetto di configurazioneserver, usato per configurare passport-ldapauth. Se hai problemi a configurare LDAP, vale la pena leggere il README di passport-ldapauth per farti un’idea della configurazione che si aspetta.
La variabile d’ambiente EXTERNAL_AUTH è necessaria per abilitare il modulo di autenticazione LDAP. Questa variabile d’ambiente specifica quali metodi di autenticazione esterna sono attivati. Il valore di questa variabile è un elenco. Se l’elenco include ldap, l’autenticazione LDAP verrà attivata.
Ad esempio: EXTERNAL_AUTH=ldap saml
A differenza di Overleaf CEP, nella nostra edizione ayaka-notes limitiamo l’autenticazione LDAP a un metodo di autenticazione puro, disponibile all’indirizzo http://your-overleaf.com/ldap/login.
Quando si usano i metodi di autenticazione LDAP e un utente inserisce username e password nel modulo di accesso, si procede come segue:
- Viene cercato un utente LDAP nella directory LDAP usando il filtro definito da
OVERLEAF_LDAP_SEARCH_FILTERe l’utente viene autenticato. - Se l’autenticazione ha esito positivo, nel database degli utenti di Overleaf si cerca un utente con l’indirizzo email principale corrispondente all’indirizzo email dell’utente LDAP autenticato:
- Se viene trovato un utente corrispondente, il campo
hashedPassworddi questo utente viene eliminato (se esiste). Ciò garantisce che in futuro l’utente possa accedere solo tramite autenticazione LDAP. - Se non viene trovato alcun utente corrispondente, viene creato un nuovo utente Overleaf usando l’email, il nome e il cognome recuperati dal server LDAP.
- Se viene trovato un utente corrispondente, il campo
Variabili d’ambiente
OVERLEAF_LDAP_URL(obbligatoria)- URL del server LDAP.
- Esempio:
ldaps://ldap.example.com:636(LDAP su SSL) - Esempio:
ldap://ldap.example.com:389(non cifrato o STARTTLS, se configurato).
- Esempio:
- URL del server LDAP.
OVERLEAF_LDAP_IDENTITY_SERVICE_NAME- Nome visualizzato del servizio di identità LDAP, usato nella pagina di accesso.
- Valore predefinito:
Log in with LDAP Provider.
OVERLEAF_LDAP_EMAIL_ATT- L’attributo email restituito dal server LDAP, predefinito
mail. Ogni utente LDAP deve avere almeno un indirizzo email. Se vengono forniti più indirizzi, verrà usato solo il primo.
- L’attributo email restituito dal server LDAP, predefinito
OVERLEAF_LDAP_FIRST_NAME_ATT- Il nome della proprietà che contiene il nome dell’utente usato nell’applicazione, di solito
givenName.
- Il nome della proprietà che contiene il nome dell’utente usato nell’applicazione, di solito
OVERLEAF_LDAP_LAST_NAME_ATT- Il nome della proprietà che contiene il cognome dell’utente usato nell’applicazione, di solito
sn.
- Il nome della proprietà che contiene il cognome dell’utente usato nell’applicazione, di solito
OVERLEAF_LDAP_NAME_ATT- Il nome della proprietà che contiene il nome completo dell’utente, di solito
cn. Se una delle due variabili precedenti non è definita, il nome e/o il cognome dell’utente vengono estratti da questa variabile. Altrimenti non viene usata.
- Il nome della proprietà che contiene il nome completo dell’utente, di solito
OVERLEAF_LDAP_PLACEHOLDER- Il segnaposto per il modulo di accesso, predefinito
Username.
- Il segnaposto per il modulo di accesso, predefinito
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN- Se impostata su
true, aggiorna i campifirst_nameelast_namedell’utente LDAP all’accesso e disattiva il modulo dei dettagli utente nella pagina/user/settingsper gli utenti LDAP. Altrimenti, i dettagli verranno recuperati solo al primo accesso.
- Se impostata su
OVERLEAF_LDAP_BIND_DN- Il distinguished name dell’utente LDAP da usare per la connessione LDAP (questo utente deve poter cercare/elencare gli account sul server LDAP), ad es.
cn=ldap_reader,dc=example,dc=com. Se non definito, viene usato il binding anonimo.
- Il distinguished name dell’utente LDAP da usare per la connessione LDAP (questo utente deve poter cercare/elencare gli account sul server LDAP), ad es.
OVERLEAF_LDAP_BIND_CREDENTIALS- Password per
OVERLEAF_LDAP_BIND_DN.
- Password per
OVERLEAF_LDAP_BIND_PROPERTY- Proprietà dell’utente con cui effettuare il bind sul client, predefinita
dn.
- Proprietà dell’utente con cui effettuare il bind sul client, predefinita
OVERLEAF_LDAP_SEARCH_BASE(obbligatoria)- Il DN di base da cui cercare gli utenti. Ad es.
ou=people,dc=example,dc=com.
- Il DN di base da cui cercare gli utenti. Ad es.
OVERLEAF_LDAP_SEARCH_FILTER- Filtro di ricerca LDAP con cui trovare un utente. Usa il letterale ‘{{username}}’ per far interpolare il nome utente fornito nella ricerca LDAP.
- Esempio:
(|(uid={{username}})(mail={{username}}))(l’utente può accedere con l’email o con il nome di login). - Esempio:
(sAMAccountName={{username}})(Active Directory).
- Esempio:
- Filtro di ricerca LDAP con cui trovare un utente. Usa il letterale ‘{{username}}’ per far interpolare il nome utente fornito nella ricerca LDAP.
OVERLEAF_LDAP_SEARCH_SCOPE- L’ambito della ricerca può essere
base,oneosub(predefinito).
- L’ambito della ricerca può essere
OVERLEAF_LDAP_SEARCH_ATTRIBUTES- Array JSON di attributi da recuperare dal server LDAP, ad es.
["uid", "mail", "givenName", "sn"]. Per impostazione predefinita vengono recuperati tutti gli attributi.
- Array JSON di attributi da recuperare dal server LDAP, ad es.
OVERLEAF_LDAP_STARTTLS- Se
true, viene usato LDAP su TLS.
- Se
OVERLEAF_LDAP_TLS_OPTS_CA_PATH- Percorso del file contenente il certificato CA usato per verificare il certificato SSL/TLS del server LDAP. Se ci sono più certificati, può essere un array JSON di percorsi ai certificati. I file devono essere accessibili al container Docker.
- Esempio (un certificato):
/var/lib/overleaf/certs/ldap_ca_cert.pem - Esempio (più certificati):
["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
- Esempio (un certificato):
- Percorso del file contenente il certificato CA usato per verificare il certificato SSL/TLS del server LDAP. Se ci sono più certificati, può essere un array JSON di percorsi ai certificati. I file devono essere accessibili al container Docker.
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH- Se
true, il certificato del server viene verificato rispetto all’elenco delle CA fornite.
- Se
OVERLEAF_LDAP_CACHE- Se
true, verranno memorizzate nella cache fino a 100 credenziali alla volta per 5 minuti.
- Se
OVERLEAF_LDAP_TIMEOUT- Per quanto tempo il client deve lasciare attive le operazioni prima del timeout, in ms (predefinito: Infinity).
OVERLEAF_LDAP_CONNECT_TIMEOUT- Per quanto tempo il client deve attendere prima del timeout sulle connessioni TCP, in ms (predefinito: valore predefinito del sistema operativo).
OVERLEAF_LDAP_IS_ADMIN_ATTeOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE- Quando entrambe le variabili d’ambiente sono impostate, il processo di accesso imposta
user.isAdmin = truese il profilo LDAP contiene l’attributo specificato daOVERLEAF_LDAP_IS_ADMIN_ATTe il suo valore corrisponde aOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEoppure è un array che contieneOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; altrimentiuser.isAdminviene impostato sufalse. Se una delle due variabili non è impostata, lo stato di amministratore viene impostato sutruesolo durante la creazione dell’utente amministratore nel Launchpad.
- Quando entrambe le variabili d’ambiente sono impostate, il processo di accesso imposta
OVERLEAF_LDAP_CONTACTS_FILTER- Il filtro usato per cercare nel server LDAP gli utenti da caricare nei contatti. Il segnaposto ‘{{userProperty}}’ nel filtro viene sostituito con il valore della proprietà specificata da
OVERLEAF_LDAP_CONTACTS_PROPERTYdell’utente LDAP che avvia la ricerca. Se non definito, nessun utente viene recuperato dal server LDAP nei contatti.
- Il filtro usato per cercare nel server LDAP gli utenti da caricare nei contatti. Il segnaposto ‘{{userProperty}}’ nel filtro viene sostituito con il valore della proprietà specificata da
OVERLEAF_LDAP_CONTACTS_SEARCH_BASE- Specifica il DN di base da cui iniziare la ricerca dei contatti. Predefinito:
OVERLEAF_LDAP_SEARCH_BASE.
- Specifica il DN di base da cui iniziare la ricerca dei contatti. Predefinito:
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE- L’ambito della ricerca può essere
base,oneosub(predefinito).
- L’ambito della ricerca può essere
OVERLEAF_LDAP_CONTACTS_PROPERTY- Specifica la proprietà dell’oggetto utente che sostituirà il segnaposto ‘{{userProperty}}’ in
OVERLEAF_LDAP_CONTACTS_FILTER.
- Specifica la proprietà dell’oggetto utente che sostituirà il segnaposto ‘{{userProperty}}’ in
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE- Specifica il valore di
OVERLEAF_LDAP_CONTACTS_PROPERTYse la ricerca viene avviata da un utente non LDAP. Se questa variabile non è definita, il filtro risultante non corrisponderà a nulla. Il valore*può essere usato come carattere jolly.
- Specifica il valore di
Esempio
Esempio
gid UNIX. Gli utenti non LDAP avranno nei propri contatti tutti gli utenti LDAP con gid=1000 UNIX.File variables.env di esempio
File variables.env di esempio
Passo dopo passo: goauthentik
Questa guida illustra una configurazione testata con goauthentik. Gli esempi usano il Base DNdc=example,dc=com; sostituiscilo con il tuo.
Crea un account di bind
ldapservice, e fai clic su Create:
Authentik: crea l'account di bind
OVERLEAF_LDAP_BIND_CREDENTIALS:
Authentik: imposta la password dell'account di bind (istanza di test)
19 in …/#/identity/users/19. Ti servirà nel passo 3.Crea il provider e l'applicazione
overleaf-ldap, e fai clic su Next:
Authentik: nome e slug dell'applicazione

Authentik: scegli il provider LDAP

Authentik: modalità di bind e di ricerca del provider LDAP
default-authentication-flow e Base DN sul tuo Base DN, ad esempio dc=example,dc=com:
Authentik: bind flow e Base DN del provider LDAP
Consenti all'account di bind di cercare nella directory
ak-managed-role--user-<number>, quindi attiva Search full LDAP directory:
Authentik: concedi all'account di bind il permesso di ricerca (istanza di test)

Authentik: permessi di un provider LDAP (istanza di test)
Esegui l'outpost LDAP

Authentik: un outpost LDAP in esecuzione (istanza di test)
Compila i DN

Authentik: panoramica di un provider LDAP (istanza di test)
- Bind DN mostra l’account con cui hai effettuato l’accesso. Usa invece l’account di bind del passo 1:
cn=ldapservice,ou=users,<Base DN>. - Search base mostra il Base DN. Usa
ou=users,<Base DN>.
Verifica la ricerca
dn::dn:, di solito manca il permesso del passo 3.Mappa gli amministratori (facoltativo)
memberOf, come DN sotto ou=groups. Per rendere amministratori di Overleaf i membri del gruppo Authentik Admins:variables.env testato per goauthentik
variables.env testato per goauthentik

