en
Lingua
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
traduzione AI
  • ee
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

Autenticazione LDAP

LDAP

Come configurare l'autenticazione LDAP

Panoramica
Dichiarazione della modalità di autenticazione LDAP
Creazione al volo dell'utente
Accesso LDAP basato su gruppo
Troubleshooting
situazioni d'angolo

 

Panoramica

LDAP (Lightweight Directory Access Protocol) è un protocollo software che consente a chiunque di individuare organizzazioni, individui e altre risorse come file e dispositivi in ​​una rete, sia su Internet pubblica che su una rete intranet aziendale. LDAP è una versione "leggera" (quantità minore di codice) di Directory Access Protocol (DAP), che fa parte di X.500, uno standard per i servizi di directory in una rete. LDAP è più leggero perché nella sua versione iniziale non includeva funzionalità di sicurezza. Easy Redmine supporta nativamente l'autenticazione LDAP utilizzando una o più directory LDAP. I tipi di servizi di directory supportati includono Active Directory, OpenLDAP, eDirectory, Sun Java System Directory Server e altri servizi di directory compatibili.

Una directory LDAP è organizzata in una semplice gerarchia "ad albero" composta dai seguenti livelli:

  1. La directory radice (il punto di partenza o l'origine dell'albero), che si dirama verso
  2. Paesi, ognuno dei quali si dirama verso
  3. Organizzazioni, che si diramano verso
  4. Unità organizzative (divisioni, dipartimenti e così via), che si dirama verso (include una voce per)
  5. Individui (che include persone, file e risorse condivise come le stampanti)

 

Dichiarazione della modalità di autenticazione LDAP

Vai su Amministrazione e fai clic su "Autenticazione LDAP" nel menu. Qui trovi l'elenco di tutte le modalità di autenticazione LDAP esistenti, incluse le opzioni per testare o eliminare qualsiasi. Per crearne uno nuovo, fai clic sul pulsante verde "Nuova modalità di autenticazione" nell'angolo in alto a destra.

Il provider di servizi LDAP utilizza un URL per configurare la connessione al server di directory. Per generare l'URL della connessione LDAP, è necessario specificare i seguenti campi:

  • Nome e Cognome: Un nome arbitrario per la directory.
  • host: Il nome host LDAP (server di test).
  • porto: La porta LDAP (il valore predefinito è 389).
  • LDAP: Selezionare questa opzione se si desidera o è necessario utilizzare LDAPS per accedere alla directory.
  • Account: Immettere un nome utente che abbia accesso in lettura a LDAP, altrimenti lasciare vuoto questo campo se il proprio LDAP può essere letto in modo anonimo (i server Active Directory generalmente non consentono l'accesso anonimo).
  • Password: Password per l'account.
  • DN di base: Il DN di livello superiore dell'albero della directory LDAP (esempio: dc = esempio, dc = com).
  • Filtro LDAP: I filtri possono essere utilizzati per limitare il numero di utenti o gruppi a cui è consentito accedere a un'applicazione. In sostanza, il filtro limita la parte dell'albero LDAP da cui l'applicazione si sincronizza. Un filtro può e deve essere scritto sia per l'appartenenza dell'utente che per quella del gruppo. Ciò garantisce di non inondare la tua applicazione con utenti e gruppi che non necessitano di accesso.
     

    Filtri di esempio

    (avvertimento) Questi filtri sono scritti per Active Directory. Per usarli per qualcosa come OpenLDAP, gli attributi dovranno essere cambiati.

    Questo sincronizzerà solo gli utenti nel gruppo "CaptainPlanet" - questo dovrebbe essere applicato al Filtro oggetto utente:

    (&(objectCategory=Person)(sAMAccountName=*)(memberOf=cn=CaptainPlanet,ou=users,dc=company,dc=com))

    E questo cercherà gli utenti che sono membri di questo gruppo, direttamente o tramite annidamento:

    (&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=cn=CaptainPlanet,ou=users,dc=company,dc=com))

    (Informazioni) Importante per Active Directory memberOf: 1.2.840.113556.1.4.1941 se vuoi trovare gruppi nidificati (non sostituire la stringa numerica) all'interno del gruppo CaptainPlanet.

    Questo cercherà gli utenti che sono membri di uno o tutti i gruppi 4 (fuoco, vento, acqua, cuore)

    (&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=cn=fire,ou=users,dc=company,dc=com)(memberOf=cn=wind,ou=users,dc=company,dc=com)(memberOf=cn=water,ou=users,dc=company,dc=com)(memberOf=cn=heart,ou=users,dc=company,dc=com)))
  • Timeout (in secondi): Se il provider LDAP non riceve una risposta LDAP entro il periodo specificato, interrompe il tentativo di lettura. L'intero dovrebbe essere maggiore di zero. Un numero intero minore o uguale a zero significa che non viene specificato alcun timeout di lettura, il che equivale ad attendere la risposta all'infinito fino a quando non viene ricevuta, il che assume il comportamento originale. Se questa proprietà non è specificata, l'impostazione predefinita è attendere la risposta fino a quando non viene ricevuta.
  • Creazione utente al volo: Controllando questo, ogni utente LDAP avrà il suo account Easy Redmine creato automaticamente la prima volta che accede a Easy Redmine. Altrimenti, dovrai creare manualmente l'utente in Easy Redmine per ogni utente LDAP che desidera accedere.

Attributi (Esempi):

  • Attributo di accesso: Il nome di accesso con cui un utente accede e viene autenticato.
  • Attributo nome: Attributo per nome.
  • Attributo cognome: Attributo per cognome.
  • Attributo email: Attributo per indirizzo e-mail.

Gli utenti di Easy Redmine ora dovrebbero essere in grado di autenticarsi utilizzando il loro nome utente e password LDAP se i loro account sono impostati per utilizzare LDAP per l'autenticazione (controllare l'impostazione "Modalità di autenticazione" quando si modifica il profilo dell'utente).

Per verificarlo, crea un utente di Easy Redmine con un accesso che corrisponda al suo account LDAP (normalmente, Easy Redmine ti consiglierà cercando i dati LDAP), seleziona il LDAP appena creato nell'elenco a discesa Modalità autenticazione (questo campo è visibile nella schermata dell'account solo se viene dichiarato un LDAP) e lascia vuota la sua password. Prova ad accedere a Easy Redmine utilizzando il nome utente e la password LDAP.

 

Creazione al volo dell'utente

Controllando creazione al volo dell'utente, qualsiasi utente LDAP avrà il suo account Easy Redmine creato automaticamente la prima volta che accede a Easy Redmine.
Per questo, devi specificare il nome degli attributi LDAP (nome, cognome, e-mail) che verranno utilizzati per creare i loro account Easy Redmine.

Ecco un tipico esempio usando Active Directory:

Name = My Directory Host = host.domain.org Port = 389 LDAPS = nessun account = MyDomain \ UserName (o UserName @ MyDomain a seconda del server AD) Password = Base DN = CN = utenti, DC = host, DC = dominio, DC = org Creazione utente al volo = sì Attributi Login = sAMAccountName Firstname = givenName Lastname = sN Email = mail

Ecco un altro esempio per Active Directory con una intranet a compartimenti stagni:

Name = Solo una descrizione per la pagina delle modalità di autenticazione Host = DepartmentName.OrganizationName.local Port = 389 LDAPS = no Account = DepartmentName \ UserName (o UserName @ MyDomain a seconda del server AD o bind DN uid = Manager, cn = users, dc = MyDomain, dc = com) Password = Base DN = DC = DepartmentName, DC = OrganizationName, DC = locale Creazione utente al volo = sì Attributi Login = sAMAccountName Firstname = givenName Lastname = sN Email = mail

Si noti che i nomi degli attributi LDAP sono case sensitive.

Account di binding dinamico

L'impostazione sopra avrebbe bisogno di un account speciale sul server di directory che Easy Redmine utilizza per la pre-autenticazione. È possibile utilizzare la parola chiave $ login nel campo dell'account che verrebbe sostituito dall'account di accesso corrente. In questo caso la password può essere lasciata vuota, ad esempio:

Account: $login@COMPANY.DOMAIN.NAME

or

Account: azienda \ $ login

Varianti DN base

Sebbene sia possibile che il DN di base sopra sia standard per Active Directory, Active Directory nel sito del mio datore di lavoro non utilizza il contenitore Users per utenti standard, quindi queste istruzioni mi hanno inviato un percorso lungo e doloroso. Consiglio di provare anche solo "DC = host, DC = domain, DC = org" se l'accesso fallisce con le impostazioni lì.

 

Accesso LDAP basato su gruppo

Se si desidera consentire solo gli accessi agli utenti appartenenti a un determinato gruppo LDAP, seguire le istruzioni seguenti. Si basano sul server LDAP OpenLDAP e su Easy Redmine.

1. (Server OpenLDAP) Abilita membro di overlay

1.1. Crea un file:

vim ~ / memberof_add.ldif

Con il contenuto seguente:

dn: cn = module, cn = config
objectClass: olcModuleList
cn: module
olcModulePath: / usr / lib / ldap
olcModuleLoad: memberof

1.2. Crea un file:

vim ~ / memberof_config.ldif

Con il contenuto seguente:

dn: olcOverlay = memberof, olcDatabase = {1} hdb, cn = config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignora
olcMemberOfInt: VERO
olcMemberOfGroupOC: gruppo di nomi
olcMemberOfMemberAD: membro
olcMemberOfMemberOfAD: memberOf

1.3. Caricali. Dipenderà dalla tua configurazione OpenLDAP, quindi proporremo alcune possibilità:

sudo ldapadd -c -Y EXTERNAL -H ldapi: /// -f memberof_add.ldif
sudo ldapadd -c -Y EXTERNAL -H ldapi: /// -f memberof_config.ldif

Oppure:

ldapadd -D cn = admin, cn = config -w "password" -H ldapi: /// -f memberof_add.ldif
ldapadd -D cn = admin, cn = config -w "password" -H ldapi: /// -f memberof_config.ldif

Un riavvio NON è necessario se si utilizza il motore di configurazione di runtime dinamico (slapd-config).

1.4. (Opzionale) Provalo:

ldapsearch -D cn = admin, dc = example, dc = com -x -W -b 'dc = example, dc = com' -H 'ldap: //127.0.0.1: 389 /' '(& (objectClass = posixAccount ) (memberOf = cn = ldapeasyredmine, ou = groups, dc = example, dc = com)) '

2. (Server OpenLDAP) Crea il gruppo. In questo esempio l'utente è "ldap_user_1" e il gruppo è "ldapeasyredmine":

dn: cn = ldapeasyredmine, ou = groups, dc = example, dc = com
cn: ldapeasyredmine
descrizione: I membri del personale possono accedere al sistema di ticketing Easy Redmine
membro: cn = ldap_user_1, ou = people, dc = example, dc = com
classe oggetto: groupOfNames
classe oggetto: in alto

Regola "dn" e "cn" s per adattarlo alla tua struttura DIT

3. (Easy Redmine) Modifica la modalità di autenticazione LDAP. Nel mio caso "ldap_user_1" è una classe di oggetti "posixAccount":

DN di base: dc = esempio, dc = com
Filtro: (& (objectClass = posixAccount) (memberOf = cn = ldapeasyredmine, ou = groups, dc = example, dc = com))

 

Troubleshooting

Se desideri utilizzare la creazione utente al volo, assicurati che Easy Redmine possa recuperare dal tuo LDAP tutte le informazioni richieste per creare un utente valido.
Ad esempio, la creazione di un utente al volo non funzionerà se non ci sono indirizzi e-mail validi nella directory (quando si tenta di accedere verrà visualizzato un messaggio di errore "Nome utente / password non validi").
(Questo non è vero con le versioni più recenti di Easy Redmine; la finestra di dialogo di creazione dell'utente è popolata con tutto ciò che può trovare dal server LDAP e chiede al nuovo utente di compilare il resto.)

Inoltre, assicurati di non avere alcun campo personalizzato contrassegnato come necessario per account utente. Questi campi personalizzati impediscono la creazione al volo di account utente.

Gli errori nel sistema di accesso non vengono riportati con alcuna informazione reale nei registri di Easy Redmine, il che rende difficile la risoluzione dei problemi. Tuttavia, puoi trovare la maggior parte delle informazioni che ti servono utilizzando Wireshark tra l'host Easy Redmine e il server LDAP. Nota che funziona solo se disponi delle autorizzazioni per leggere il traffico di rete tra questi due host.

Puoi anche usare lo strumento 'ldapsearch' per verificare se le tue impostazioni sono corrette. Accedi al computer Linux che ospita Easy Redmine (ed eventualmente installa ldaputils) ed esegui questo:

ldapsearch -x -b  "dc=example,dc=com" -H ldap://hostname/ -D "DOMAIN\USER" -w mypassword [searchterm]

In caso di successo, otterrai un elenco dei contenuti di AD, corrispondente alla tua query di ricerca. Quindi, saprai come compilare i campi nella configurazione LDAP in Easy Redmine.

Modi alternativi per verificare la funzionalità

  • Prova a rimuovere i filtri LDAP che, se impostati in modo errato, possono eliminare gli utenti che desideri trovare.
  • Accanto a "Attributo di accesso" è presente un'icona a forma di libro. Se fai clic su di esso e LDAP è impostato correttamente, gli "attributi abituali" vengono automaticamente pre-compilati dal server LDAP effettivo. Invece dei campi di testo, vengono visualizzate le caselle di selezione per un caso in cui l'utente desidera modificare le impostazioni. Nella maggior parte dei casi, l'utente non deve riempire affatto questo. Se funziona, è probabile che tutto il resto funzioni.
  • Per problemi di connessione, è possibile utilizzare il pulsante "Test" nell'elenco dei server LDAP. Attenzione, serve solo per verificare se è possibile connettersi a LDAP. Il problema comune è che gli amministratori non riempiono l'utente del sistema LDAP anche quando le impostazioni LDAP sono ancora protette. In questo caso, il test verrà eseguito correttamente perché la connessione funziona ma nessun utente può essere aggiunto perché LDAP non "vede" nessuno.
  • Per verificare se LDAP funziona davvero, è possibile utilizzare anche il numero "Utenti disponibili" - se il suo valore è 0, LDAP non restituisce alcun dato e probabilmente è impostato in modo errato. Se è presente un numero, è possibile fare clic su di esso per espandere e vedere cosa mostra LDAP (e regolare i filtri di conseguenza).

Il mio account formato valore

Potrebbe essere necessario specificare il nome utente per le credenziali di bind come DN anziché come UPN (user@domain.com) o come dominio \ utente, come sottolineato da questo commento in source: trunk / vendor / plugins / rubino-net-ldap-0.0.4 / lib / net / ldap.rb:

  # Come descritto in #bind, la maggior parte dei server LDAP richiede di fornire un DN # completo come credenziale di associazione, insieme a un autenticatore come una password.

Pertanto l'utente con MyDomain \ MyUserName o MioNomeUtente@MioDominio.com il nome utente potrebbe inserire solo MyUserName come nome di accesso di Easy Redmine.

Autenticazione LDAP lenta

Se l'autenticazione LDAP è lenta e si dispone di un cluster AD, provare a specificare nel campo Host uno dei server fisici AD. Potrebbe essere d'aiuto.

OpenDS

Se stai usando il server OpenDS, potresti avere problemi con il controllo della richiesta "Risultati paginati" inviati con la query iniziale che cerca l'utente dall'attributo di accesso specificato. Questo controllo delle richieste 1.2.840.113556.1.4.319 non è consentito per gli utenti anonimi per impostazione predefinita, impedendo così a Easy Redmine di trovare l'utente nella directory anche prima che abbia luogo l'associazione.

Aggiungi un ACI globale come questo

./dsconfig -h SERVER_IP -p 4444 -D cn = "Directory Manager" -w PASSWORD -n set-access-control-handler-prop -trustAll --add global-aci: \ (targetcontrol = \ "1.2.840.113556.1.4.319 \" \) \ \ (versione \ 3.0 \; \ acl \ \ "Anonimo \ control \ access \ to \ 1.2.840.113556.1.4.319 \" \; \ allow \ \ (read \) \ userdn = \ "ldap: /// anyone \" \ ; \)

Nota: immettere il comando su una riga, utilizzare l'escaping esattamente come indicato (\ after "acl" deve essere "\" per lo spazio).

Alcuni utenti non riescono ad accedere

Problema: Una specifica unità organizzativa di utenti non è in grado di accedere (utente o password non validi) mentre tutti gli altri lo sono. Gli utenti si trovano in un sito remoto, ma gli utenti delle altre unità organizzative nello stesso sito non visualizzano questo errore.

Soluzione: Il problema molto probabilmente non è relativo a impostazioni errate, ma piuttosto a un problema di Active Directory (AD). Gli utenti che non erano in grado di connettersi avevano il campo "Accesso a" impostato su un determinato PC nelle Proprietà dell'utente AD (amministrazione AD). Dopo averlo modificato in "Accesso da qualsiasi luogo", dovrebbe funzionare. Più specificamente, questo campo deve essere impostato su: Utente AD -> Proprietà -> Account -> Accesso da qualsiasi luogo.

Problemi con l'accesso quando si utilizza LDAPS senza un certificato valido

È possibile riscontrare problemi con l'accesso quando si utilizza LDAPS senza un certificato valido. In Redmine 4, il certificato LDAPS è sempre convalidato. Con un certificato non valido, gli utenti non saranno in grado di accedere. Naturalmente, la soluzione corretta ea lungo termine è utilizzare un certificato valido. Ma finché non si ottiene ciò, la soluzione temporanea è andare su Amministrazione >> Autenticazione LDAP >> Modifica la rispettiva modalità di autenticazione.

Modificare l'impostazione su LDAPS (senza controllo del certificato).

Con la soluzione Easy Redmine Server puoi cambiarlo alla rinfusa dalla console di rails
rails r "AuthSource.update_all (verify_peer: false)" -e produzione

o tramite SQL
UPDATE auth_sources set verify_peer = 0;

 

situazioni d'angolo

  • Quando si importano / creano utenti automaticamente da LDAP, l'impostazione del tipo di utente predefinito immessa nel modulo di creazione dell'utente è preferita all'impostazione del tipo di utente predefinito immessa su LDAP. Una volta creato l'utente, questa impostazione non può essere modificata in seguito (a meno che non si crei un nuovo LDAP).

Prova Easy Redmine in 30 giorni di prova gratuita

Funzionalità complete, protezione SSL, backup giornalieri, nella tua geolocalizzazione