IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Introducció

Lightweight Directory Access Protocol (LDAP). Protocol lleuger que permet accedir a un directori.

S'utilitza per emmagatzemar la informació dels usuaris i els recursos d'un domini tot i que pot tenir altres usos. El seu objectiu principal és permetre l'autenticació en xarxa. També s'utilitza sovint per inventariar recursos de xarxa (màquines, impressores, servidors, etc. ) o directoris de recursos humans.

LDAP NO és una bases de dades. És una interfície per accedir a una base de dades. LDAP és un servei de directori que ens permet accedir a un repositori de dades anomenat directori. L'estructura de la base de dades (estructura jeràrquica) difereix força de l'estructura relacional (taules i registres) de les bases de dades "tradicionals".

LDAP permet accedir a un directori (carpetes), que té una forma d'arbre. Es gestionen usuaris i recursos (màquines, impressores, servidors, ...).

Per què Ldap?

És un estàndard "de facto". Àmpliament utilitzat i suportat per múltiples aplicacions.

  • Autenticació (qui ho utilitzarà): Linux, Postfix, Courier, Egroupware, Phpgroupware, Gforge, Jabber, Apache, Moodle, Mediawiki, Mozilla Thunderbird, Evolution, Plone, Samba, servidors de FTP...
  • Llenguatges de programació que ho suporten: PHP, Phyton, Ruby On Rails, Mono, Java, ASP, C, C++...

És un estàndard Obert (amb implementacions tancades). Hi han múltiples eines (tant lliures com privades) per treballar amb LDAP.

X.500

És una sèrie de protocols de xarxa per oferir serveis de directori. Va ser creat per la ITU-T (ara CCITT) i adoptat per la OSI (ISO/IEC 9594).

X.500 implementava els següents protocols:

  • DAP (Directory Access Protocol)
  • DSP (Directory System Protocol)
  • DISP (Directory Information Shadowing Protocol)
  • DOP (Directory Operational Bindings Management Protocol)

Antecessor de LDAP. LDAP és més simple i més adaptat a les necessitats actuals (suporta TCP/IP). Actualment s'utilitzen els certificats X.509 en criptografia de clau pública.

Arbre LDAP

Hi han 2 maneres d'utilitzar LDAP.

Model DNS

BDJaumeS 61.png

L'arrel és compartida amb tothom. És comença pel domini (.com, .net, ...) seguida pel nom. D'aquesta manera ens estalviem els "xocs" entre noms.

L'organització del directori segueix una estructura d'arbre invertit.

Els nodes poden ser de 2 tipus: fulles (s'acaba la jerarquia) o nodes (en general).

UO (unitats organitzatives): objectes que tenen "fills" (altres objectes).

Els fitxers són objectes (són les fulles). Un objecte ha de tenir un nom únic (que l'identifiqui de forma única): DN (Distinguished Name). S'obté sumant el nom del pare més una part única de cada objecte: RDN (Relative Distinguished Name).

BDJaumeS 63.png

Model territorial

BDJaumeS 62.png

Avantatges i inconvenients

LDAP → estructura jeràrquica.

Utilitzarem una BD jeràrquica quan ens interessa tenir molts d'usuaris fent consultes.

Avantatges

  • Rapidessa en operacions de lectura.
  • Fàcils de ser distribuïdes (de repartir la càrrega). Molt escalable.

Inconvenients

  • Més lentes en operacions d'escriptura, afegir i/o modificació.
  • No utilitzades per fer transaccions.

Implementacions

Ldap és una especificació amb múltiples implementacions

  • Active Directory: Juntament amb altres protocols (DNS, DHCP, Kerberos...) és el que utilitza Microsoft per a la seva implementació d'una xarxa distribuïda.
  • OpenLDAP: Implementació lliure àmpliament utilitzada.
  • Novell Directory Services: Utilitzat en sistemes operatius de xarxa Novell.
  • iPlanet
  • Red Hat Directory Server

OpenLdap

OpenLDAP és una implementació de codi obert i gratuïta de l'estàndard (LDAP)

  • Instal·lació:
$ sudo apt-get install slapd
  • Instal·lació client: s'ha d'instal·lar:
$ sudo apt-get install ldap-utils

LDAP és un protocol Client-Servidor. El client es connecta al servidor Ldap (normalment utilitzant el port 389) iniciant una sessió LDAP

BDJaumeS 70.png

Configuració del servidor

Tenim que reconfigurar el paquet:

$ dpkg-reconfigure slapd


Apache Directory Studio

En la part inferior esquerra hi ha una pestanya que fica Servers. Es fa botó dret dins de l'espai en blanc - New - New server. Surt una pantalla on li donen un nom a la nova connexió, i ja està creada.

BDJaumeS 64.png

Una vegada creada, la fem anar clicar la icona de play. Després, fem botó dret de la connexió - LDAP Browser - Create a Connection. Ens crearà una connexió. Si després cliquem en la pestanya del costat (Connection) i fem doble clic damunt del nom de la connexió, aquesta s'obrirà (es connectarà). Només es pot tenir una connexió oberta a la vegada.

BDJaumeS 65.png

DIT: Directory Information Tree. És l'arrel de tot.

BDJaumeS 66.png

Exemple de DN (DN: cn, ou, ...):

BDJaumeS 67.png

Objectes

Poden ser STRUCTURAL, AUXILIARY (es pot utilitzar en qualsevol objecte, en qualsevol moment) o ABSTRACT (per objectes especials, com el TOP). Com a mínim s'ha de tenir un STRUCTURAL per crear un objecte.

BDJaumeS 68.png
  • Person: Per definir persones.
  • inetOrgPerson: Fill de organizationalPerson. Inclou Internet.
  • posixAccount: Comptes d'usuaris (usuari, password, home, ...).
  • Organization (o): Són carpetes que s'utilitzen per organitzar.
  • Organization unit (ou): Són carpetes que s'utilitzen per organitzar.
  • sambaAccount: Per persones que utilitzin Windows.

Creació d'un objecte

Utilitzem Apache Directory Studio per crear un objecte.

BDJaumeS 69.png

Una vegada creat, fem botó dret - Export - Schemas as OpenLDAP files i també Schemas for Apache DS. Ens crea 2 fitxers que són els següents:

  • Fitxer mipersona.ldif
# Generated by Apache Directory Studio on 24 / febrer / 2012 20:37:04

# SCHEMA "MIPERSONA"
dn: cn=mipersona, ou=schema
objectclass: metaSchema
objectclass: top
cn: mipersona
m-dependencies: inetorgperson

dn: ou=attributeTypes, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: attributetypes

dn: m-oid=1.3.6.1.4.1.38991.102.2, ou=attributeTypes, cn=mipersona, ou=schema
objectclass: metaAttributeType
objectclass: metaTop
objectclass: top
m-oid: 1.3.6.1.4.1.38991.102.2
m-name: mp2
m-description: persona mes petita
m-syntax: 1.3.6.1.4.1.1466.115.121.1.36
m-length: 0

dn: ou=comparators, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: comparators

dn: ou=ditContentRules, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: ditcontentrules

dn: ou=ditStructureRules, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: ditstructurerules

dn: ou=matchingRules, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: matchingrules

dn: ou=matchingRuleUse, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: matchingruleuse

dn: ou=nameForms, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: nameforms

dn: ou=normalizers, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: normalizers

dn: ou=objectClasses, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: objectClasses

dn: m-oid=1.3.6.1.4.1.38991.102.1, ou=objectClasses, cn=mipersona, ou=schema
objectclass: metaObjectClass
objectclass: metaTop
objectclass: top
m-oid: 1.3.6.1.4.1.38991.102.1
m-name: mp1
m-description: Una persona
m-supObjectClass: inetOrgPerson

dn: ou=syntaxCheckers, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: syntaxcheckers

dn: ou=syntaxes, cn=mipersona, ou=schema
objectclass: organizationalUnit
objectclass: top
ou: syntaxes
  • Fitxer mipersona.schema
attributetype ( 1.3.6.1.4.1.38991.102.2 
	NAME 'mp2' 
	DESC 'persona mes petita' 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 
 )

objectclass ( 1.3.6.1.4.1.38991.102.1 
	NAME 'mp1' 
	DESC 'Una persona' 
	SUP inetOrgPerson 
	STRUCTURAL 
 )

Paràmetres

  • givenName: Noms de persones.
  • sn (surName): Cognom. Només un cognom (ja que està creat a nivell anglosaxó).
  • IrisOrgPerson: S'utilitza a nivell espanyol. Té sn1 i sn2.
  • postalCode, street, ...

Matching Rules

Per fer comparacions.

Syntaxes

Per definir els tipus de paràmetres.

OID (Object Identified)

Atributs LDAP

Identificador numéric.

Està gestionat com les DNS. Gestionat per la IANA. Es pot demanar un OID a:

PEN Private Enterprise Number:  http://pen.iana.org/pen/PenApplication.page

Podem veure el PEN assignat a:

http://www.iana.org/assignments/enterprise-numbers

GOSA

Install-gosa

Per instal·lar aquest paquet cal afegir el següent repositori al fitxer /etc/apt/sources.list:

$ sudo nano /etc/apt/sources.list
...
deb http://www.iesebre.com/ubuntu/custompackages ./

Per evitar els avisos del repositori (dient que no està autenticat) executem:

$ wget -q http://www.iesebre.com/ubuntu/custompackages/iesebre.asc -O- | sudo apt-key add -

Després executem:

$ sudo apt-get update && sudo apt-get install install-gosa

WORDPRESS + GOSA

Anem a la pàgina de Wordpress (http://wordpress.org/download/) i ens descarreguem el paquet .tar.gz que correspon a la versió més actual (en aquest moment és la wordpress-3.3.1.tar.gz).

Wordpress jaume sole 1.png

Descomprimim el paquet amb la comanda:

$ tar -xzvf wordpress-3.3.1.tar.gz
Wordpress jaume sole 2.png

Una vegada comprimit, ens crearà una carpeta (allà on haguem descomprimit el paquet) anomenada wordpress. Aquesta carpeta la tenim que moure dins de /var/www.

$ mv wordpress /var/www

A continuació tenim que crear una base de dades dins de MySQL. Utilitzarem les següents comandes:

$ mysql -u root -p
mysql> CREATE DATABASE wordpress;
mysql > GRANT ALL PRIVILEGES ON wordpress.* TO [email protected] IDENTIFIED BY "la_vostra_paraula_de_pas";
mysql > FLUSH PRIVILEGES;
mysql> exit
Wordpress jaume sole 3.png

NOTA: La paraula de pas que utilitzem queda desada en un fitxer i no la tornem a utilitzar més. Tot i que en la imatge d'exemple surt 123456, es convenient generar una bona clau per no tenir problemes, ja que aquesta contrasenya estarà ficada dins d'un fitxer de text.

A continuació passem a configurar Wordpress. Farem servir la comanda:

$ sudo cp wp-config-sample.php wp-config.php

Acte seguit editem el fitxer que acabem de crear i modifiquem la configuració d'accés a la base de dades MySQL:

$ sudo nano wp-config.php
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');  

/** MySQL database username */
define('DB_USER', 'wordpress');  

/** MySQL database password */
define('DB_PASSWORD', 'la_vostra_paraula_de_pas_aqui');

/** MySQL hostname */
define('DB_HOST', 'localhost');
Wordpress jaume sole 4.png


Wordpress jaume sole 5.png

Desem els canvis del fitxer i li canviem els permisos i el propietari amb les comandes:

$ sudo chown root:www-data wp-config.php 
$ sudo chmod 640 wp-config.php

A continuació configurarem l'Apache:

$ cd /etc/apache2/conf.d

Una vegada dins del directori /conf.d, creem un fitxer, anomenat wordpress, amb el següent contingut:

$ sudo nano wordpress.conf

Alias /wordpress /var/www/wordpress/

I tornem a reiniciar l'Apache amb la comanda:

$ sudo /etc/init.d/apache2 restart
Wordpress jaume sole 6.png

I accediu a la URL:

http://www.elvostreservidor.org/wordpress
Wordpress jaume sole 7.png

Una vegada dins, seguim els passos per crear un blog. Donem un nom al blog. El mateix programa ja crea un usuari (admin), on només tenim que ficar la contrasenya i una adreça electrònica, i cliquem el botó "Install WordPress").

Wordpress jaume sole 8.png

A continuació ja et surt una pantalla dient que s'ha creat el blog correctament.

Wordpress jaume sole 9.png

Si cliquem el botó "Log in", ens surt una altra pantalla on ja ens surt l'usuari admin i la contrasenya per entrar dins de WordPress. Només cal clicar "Log in".

Wordpress jaume sole 10.png

I ja podem entrar en la pàgina de configuració del blog

Wordpress jaume sole11.png

Per accedir a la pagina del wordpress hem d'entrar a:

http://ip_del_servidor_o_localhost/wordpress 
Wordpress jaume sole 12.png

Per accedir a la pagina de configuració del wordpress hem d'entrar a:

http://ip_del_servidor_o_localhost/wordpress/wp-login.php 

Implementar LDAP-WORDPRESS

Tornem a entrar dins de la pàgina de WordPress i anem a la pestanya "Plugins". Ens baixem la versió més actual (simple-ldap-login.1.4.0.5.1)

Wordpress jaume sole 13.png

Una vegada baixat l'arxiu .zip, el podem descomprimir en l'escriptori. Una vegada descomprimit, la carpeta que ens crea la tenim que ficar dins de /var/www/wordpress/wp-content/plugins/

A continuació, anem dins del Wordpress i tenim que seleccionar (del menú lateral) Plugins – Installed Plugins.

Wordpress jaume sole 14.png

Ens surt una pantalla amb tots els plugins disponibles. Seleccionem el plugin de WordPress (Simple Ldap Login), i cliquem en "Activate".

Wordpress jaume sole 15.png

Una vegada activat, tornem a seleccionar el plugin i cliquem en "Apply".

Quan ja tenim aplicat el plugin, tenim que anar a l'apartat Settings – Simple LDAP Login. Trobem una configuració com la que surt a la imatge.

Wordpress jaume sole 16.png

i té que quedar de la següent manera:

Wordpress jaume sole 17.png

Vegeu també

Enllaços externs

LDAP en Wikipedia