Configurarea serverului ejabberd cu LDAP
(→(Opțional) Activarea autentificării multiple) |
|||
(2 revizii intermediare efectuată de un utilizator neafișate) | |||
Linia 1: | Linia 1: | ||
− | Articolul este preluat de pe jurnalul lui Victor [http://jurnal.ceata.org/~vnitu] | + | '''Articolul este preluat de pe jurnalul lui Victor [http://jurnal.ceata.org/~vnitu]''' |
Pentru a configura eJabberd cu LDAP trebuie să urmați pașii de mai jos: | Pentru a configura eJabberd cu LDAP trebuie să urmați pașii de mai jos: | ||
Linia 5: | Linia 5: | ||
'''Notă''': fișierul de configurare se află în majoritatea cazurilor în | '''Notă''': fișierul de configurare se află în majoritatea cazurilor în | ||
− | + | /etc/ejabberd/ejabberd.cfg | |
== Notificarea utilizatorilor conectați == | == Notificarea utilizatorilor conectați == | ||
Linia 13: | Linia 13: | ||
Pentru a lista utilizatorii conectați se poate folosi de pe sistemul care găzduiește serverul ejabberd, comanda: | Pentru a lista utilizatorii conectați se poate folosi de pe sistemul care găzduiește serverul ejabberd, comanda: | ||
− | + | ejabberdctl connected-users | |
Având o listă cu utilizatorii conectați, varianta cea mai simplă e trimiterea unui mesaj „manual” fiecăruia dintre ei, dacă sunt puțini. Altfel, ar fi nevoie de mod_announce + comenzi Ad-hoc, ceea ce nu face obiectul articolului de față :-) | Având o listă cu utilizatorii conectați, varianta cea mai simplă e trimiterea unui mesaj „manual” fiecăruia dintre ei, dacă sunt puțini. Altfel, ar fi nevoie de mod_announce + comenzi Ad-hoc, ceea ce nu face obiectul articolului de față :-) | ||
Linia 21: | Linia 21: | ||
Tot ce e de făcut aici este de căutat linia: | Tot ce e de făcut aici este de căutat linia: | ||
− | + | {auth_method, internal}. | |
...și comentată prefixând-o cu | ...și comentată prefixând-o cu | ||
− | + | %%. | |
== Activarea autentificării multiple (Opțional) == | == Activarea autentificării multiple (Opțional) == | ||
Linia 31: | Linia 31: | ||
Dacă e dorită cumularea utilizatorilor interni ai ejabberd cu cei aflați în directorul LDAP, atunci vor trebui comentate toate liniile care definesc | Dacă e dorită cumularea utilizatorilor interni ai ejabberd cu cei aflați în directorul LDAP, atunci vor trebui comentate toate liniile care definesc | ||
− | + | {auth_method, "ceva"} | |
− | + | și adăugată o nouă linie: | |
+ | |||
+ | {host_config, "ceata.org", [{auth_method, [internal, ldap]}]}. | ||
Am activat aici pentru gazda ''ceata.org'' autentificarea multiplă, prin care atât conturile interne ale ejabberd, cât și cele aflate în LDAP, vor fi validate. | Am activat aici pentru gazda ''ceata.org'' autentificarea multiplă, prin care atât conturile interne ale ejabberd, cât și cele aflate în LDAP, vor fi validate. | ||
Linia 74: | Linia 76: | ||
Acum, luate linie cu linie: | Acum, luate linie cu linie: | ||
− | + | {auth_method, ldap}. | |
+ | - se configurează ejabberd să rezolve autentificarea prin LDAP | ||
− | + | {ldap_servers, ["localhost"]}. | |
+ | - se definește o '''listă''' de server LDAP pe baza cărora să se facă autentificarea. În cazul nostru este doar unul, dar se pot introduce mai multe, separate prin virgulă. | ||
− | + | %%{ldap_encrypt, none}. | |
− | %%{ldap_encrypt, tls}. | + | %%{ldap_encrypt, tls}. |
+ | - comentăm ambele linii, deoarece gazda LDAP este pe mașina locală (în cazul nostru). Configurarea lor depinde în mare măsură de modul în care se preferă interacțiunea cu serverul LDAP. | ||
− | + | {ldap_port, 389}. | |
− | + | - evident, portul de conectare la LDAP | |
− | %%{ldap_rootdn, "cn=admin,dc=example,dc=com"}. | + | |
− | %% | + | %% LDAP manager: |
− | %% Password to LDAP manager: | + | %%{ldap_rootdn, "cn=admin,dc=example,dc=com"}. |
− | %%{ldap_password, "mysecurepasswd"}. | + | %% |
+ | %% Password to LDAP manager: | ||
+ | %%{ldap_password, "mysecurepasswd"}. | ||
'''Important''': în cazul nostru, utilizatorii se vor conecta la ejabberd prin aceleași parole definite în LDAP. Alternativ, se poate defini un cont care rezolvă autentificarea, dar în majoritatea cazurilor nu pare să fie nevoie. | '''Important''': în cazul nostru, utilizatorii se vor conecta la ejabberd prin aceleași parole definite în LDAP. Alternativ, se poate defini un cont care rezolvă autentificarea, dar în majoritatea cazurilor nu pare să fie nevoie. | ||
− | + | {ldap_base, "ou=people,dc=ceata,dc=org"}. | |
'''Important''': unde se face căutarea în schema LDAP (nodul în care sunt definiți utilizatorii) | '''Important''': unde se face căutarea în schema LDAP (nodul în care sunt definiți utilizatorii) | ||
− | + | {ldap_uids, [{"uid", "%u"}]}. | |
'''Important''': câmpul dindirectorul LDAP care corespunde numelui de utilizator folosit pentru autentificarea în ejabberd. Alternativ, putem avea: | '''Important''': câmpul dindirectorul LDAP care corespunde numelui de utilizator folosit pentru autentificarea în ejabberd. Alternativ, putem avea: | ||
− | + | {ldap_uids, [{"email", "%u@example.com"}]}. | |
+ | - pentru situațiile specifice unei rețele interne, nu intru în detalii. | ||
− | + | {ldap_filter, "(objectClass=inetOrgPerson)"}. | |
+ | - '''Opțional''': un filtru suplimentar, pentru a asigura accesul la server numai utilizatorilor găsiți într-o anumită clasă. | ||
Putem afla simplu aceste variabile prin comanda (exemplu concret): | Putem afla simplu aceste variabile prin comanda (exemplu concret): | ||
− | + | ldapsearch -b "uid=user,ou=people,dc=ceata,dc=org" -D "uid=user,ou=people,dc=ceata,dc=org" -W -x -h ceata.org | |
urmată de introducerea parolei proprii (trebuie înlocuit „user” cu un utilizator real). | urmată de introducerea parolei proprii (trebuie înlocuit „user” cu un utilizator real). | ||
Linia 112: | Linia 121: | ||
Folosind | Folosind | ||
− | + | /etc/init.d/ejabberd restart | |
+ | (poate varia în funcție de distribuție) ar trebui să se restarteze serverul jabber. | ||
În caz de nevoie, setarea | În caz de nevoie, setarea | ||
− | + | {loglevel, 5}. | |
+ | (debug) în ejabberd.cfg și aruncarea unei priviri pe | ||
+ | |||
+ | /var/log/ejabberd/ejabberd.log | ||
+ | ar putea oferi indicii prețioase. | ||
Acum, ar trebui să fie totul configurat pentru a comunica prin XMPP folosind contul de LDAP. Pentru orice problemă întâmpinată în configurarea unui asemenea mediu, sau sugestii de îmbunătățire a configurării, aștept pe mail întrebări etc. | Acum, ar trebui să fie totul configurat pentru a comunica prin XMPP folosind contul de LDAP. Pentru orice problemă întâmpinată în configurarea unui asemenea mediu, sau sugestii de îmbunătățire a configurării, aștept pe mail întrebări etc. | ||
+ | |||
+ | __NOTOC__ | ||
+ | __NOEDITSECTION__ |
Versiunea curentă din 13 august 2014 09:28
Articolul este preluat de pe jurnalul lui Victor [1]
Pentru a configura eJabberd cu LDAP trebuie să urmați pașii de mai jos:
Notă: fișierul de configurare se află în majoritatea cazurilor în
/etc/ejabberd/ejabberd.cfg
Notificarea utilizatorilor conectați
Deși pare o glumă, e foarte important ca „firul” să fie liber. Nu pentru că ar periclita cumva configurarea, ci pentru a nu provoca confuzie și întreruperi ale serviciului (care uneori pot fi foarte deranjante) printre utilizatorii conectați. Nimeni nu ar dori ca în mijlocul conversației private cu vărul din America, să se întrerupă conexunea pentru că „adminul se joacă la server”.
Pentru a lista utilizatorii conectați se poate folosi de pe sistemul care găzduiește serverul ejabberd, comanda:
ejabberdctl connected-users
Având o listă cu utilizatorii conectați, varianta cea mai simplă e trimiterea unui mesaj „manual” fiecăruia dintre ei, dacă sunt puțini. Altfel, ar fi nevoie de mod_announce + comenzi Ad-hoc, ceea ce nu face obiectul articolului de față :-)
Dezactivarea autentificării interne
Tot ce e de făcut aici este de căutat linia:
{auth_method, internal}.
...și comentată prefixând-o cu
%%.
Activarea autentificării multiple (Opțional)
Dacă e dorită cumularea utilizatorilor interni ai ejabberd cu cei aflați în directorul LDAP, atunci vor trebui comentate toate liniile care definesc
{auth_method, "ceva"}
și adăugată o nouă linie:
{host_config, "ceata.org", [{auth_method, [internal, ldap]}]}.
Am activat aici pentru gazda ceata.org autentificarea multiplă, prin care atât conturile interne ale ejabberd, cât și cele aflate în LDAP, vor fi validate.
Atenție: dacă vor exista conturi duplicat între ejabberd și LDAP, serverul va da eroare, cerând renunțarea la unul dintre ele! (probabil cel intern ar fi soluția acceptată în majoritatea cazurilor)
Configurarea ejabberd + LDAP
În această fază, avem următoarele instrucțiuni de vânat în ejabberd.cfg:
%% Authentication using LDAP %% {auth_method, ldap}. %% %% List of LDAP servers: {ldap_servers, ["localhost"]}. %% %% Encryption of connection to LDAP servers (LDAPS): %%{ldap_encrypt, none}. %%{ldap_encrypt, tls}. %% %% Port connect to LDAP server: {ldap_port, 389}. %% %% LDAP manager: %%{ldap_rootdn, "cn=admin,dc=example,dc=com"}. %% %% Password to LDAP manager: %%{ldap_password, "mysecurepasswd"}. %% %% Search base of LDAP directory: {ldap_base, "ou=people,dc=ceata,dc=org"}. %% %% LDAP attribute that holds user ID: {ldap_uids, [{"uid", "%u"}]}. %% %% LDAP filter: {ldap_filter, "(objectClass=inetOrgPerson)"}.
Acum, luate linie cu linie:
{auth_method, ldap}.
- se configurează ejabberd să rezolve autentificarea prin LDAP
{ldap_servers, ["localhost"]}. - se definește o listă de server LDAP pe baza cărora să se facă autentificarea. În cazul nostru este doar unul, dar se pot introduce mai multe, separate prin virgulă.
%%{ldap_encrypt, none}. %%{ldap_encrypt, tls}.
- comentăm ambele linii, deoarece gazda LDAP este pe mașina locală (în cazul nostru). Configurarea lor depinde în mare măsură de modul în care se preferă interacțiunea cu serverul LDAP.
{ldap_port, 389}. - evident, portul de conectare la LDAP
%% LDAP manager: %%{ldap_rootdn, "cn=admin,dc=example,dc=com"}. %% %% Password to LDAP manager: %%{ldap_password, "mysecurepasswd"}.
Important: în cazul nostru, utilizatorii se vor conecta la ejabberd prin aceleași parole definite în LDAP. Alternativ, se poate defini un cont care rezolvă autentificarea, dar în majoritatea cazurilor nu pare să fie nevoie.
{ldap_base, "ou=people,dc=ceata,dc=org"}.
Important: unde se face căutarea în schema LDAP (nodul în care sunt definiți utilizatorii)
{ldap_uids, [{"uid", "%u"}]}.
Important: câmpul dindirectorul LDAP care corespunde numelui de utilizator folosit pentru autentificarea în ejabberd. Alternativ, putem avea:
{ldap_uids, [{"email", "%u@example.com"}]}.
- pentru situațiile specifice unei rețele interne, nu intru în detalii.
{ldap_filter, "(objectClass=inetOrgPerson)"}.
- Opțional: un filtru suplimentar, pentru a asigura accesul la server numai utilizatorilor găsiți într-o anumită clasă.
Putem afla simplu aceste variabile prin comanda (exemplu concret):
ldapsearch -b "uid=user,ou=people,dc=ceata,dc=org" -D "uid=user,ou=people,dc=ceata,dc=org" -W -x -h ceata.org
urmată de introducerea parolei proprii (trebuie înlocuit „user” cu un utilizator real).
Test!
Folosind
/etc/init.d/ejabberd restart
(poate varia în funcție de distribuție) ar trebui să se restarteze serverul jabber.
În caz de nevoie, setarea
{loglevel, 5}.
(debug) în ejabberd.cfg și aruncarea unei priviri pe
/var/log/ejabberd/ejabberd.log
ar putea oferi indicii prețioase.
Acum, ar trebui să fie totul configurat pentru a comunica prin XMPP folosind contul de LDAP. Pentru orice problemă întâmpinată în configurarea unui asemenea mediu, sau sugestii de îmbunătățire a configurării, aștept pe mail întrebări etc.