Couplage asterisk ldap
Introduction
Dans cet article, nous allons faire une installation et configuration d'un serveur Asterisk Couplé à un serveur LDAP. L'objectif étant de stocker les informations des utilisateurs dans l'annuaire.
- Installation des pré-requis
Ubuntu 14.04 LTS sous une machine virtuelle 1Go de RAM et 8 Go du disque dur.
# apt-get install ncurses-dev build-essential linux-headers-$(uname -r) libssl-dev openssl libc-dev zlib1g-dev bison libxml2-dev libldap-dev libiksemel-dev
- Téléchargement et Installation d’asterisk
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-14-current.tar.gz
# tar –xvzf asterisk-14-current.tar.gz –C /opt
# cd /opt/asterisk-14
#./configure
# make menuselect ; Ajout du module LDAP dans le menu Ressources_modules d’asterisk et les fichiers sounds fr
# make
# make install && make samples && make config
- Installation de LDAP
# apt-get install slapd ldap-utils phpldapadmin
- Configuration
- Copie du fichier de configuration
# cp /usr/share/doc/slapd/examples/slapd.conf /etc/ldap/
- Specification du fichier de config
# vim /etc/default/slapd
SLAPD_CONF=/etc/ldap/slapd.conf
- Copie du schemas asterisk pour ldap
# cp /usr/local/asterisk-14/contrib/scripts/asterisk.ldap-schema /etc/ldap/schema/asterisk.schema
- Configuration de ldap
# vim /etc/ldap/slapd.conf
# Schema and objectClass definitions
include /etc/ldap/schema/asterisk.schema
modulepath /usr/lib/ldap
moduleload back_hdb
backend hdb
database hdb
suffix "dc=asterisk,dc=sn"
rootdn "cn=admin,dc=asterisk,dc=sn"
rootpw passer
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=asterisk,dc=sn" write
by anonymous auth
by self write
by * none
access to *
by dn="cn=admin,dc=asterisk,dc=sn" write
by * read
- Pour l’accès à distance via l’interface graphique
# vim /etc/ldap/ldap.conf
BASE dc=asterisk,dc=sn
URI ldap://127.0.0.1
- Démarrage du serveur
# /etc/init.d/slapd restart
- Fichiers ldif
Création de la racine puis ajout des users dans leur context et des extensions
# /etc/ldap# vim racine.ldif
dn: dc=asterisk,dc=sn
objectclass: dcObject
objectclass: organization
dc: asterisk
o: asterisk
# /etc/ldap# vim asterisk.ldif
#OU asterisk
dn: ou=asterisk,dc=asterisk,dc=sn
objectClass: top
objectClass: organizationalUnit
ou: asterisk
# OU users
dn: ou=users,ou=asterisk,dc=asterisk,dc=sn
objectClass: top
objectClass: organizationalUnit
ou: users
# OU extensions
dn: ou=extensions,ou=asterisk,dc=asterisk,dc=sn
objectClass: top
objectClass: organizationalUnit
ou: extensions
# /etc/ldap# vim user1.ldif
#On génère le ldif pour le user
dn: uid=kachallah,ou=users,ou=asterisk,dc=asterisk,dc=sn
objectClass: top
objectClass: inetOrgPerson
objectClass: AsteriskSIPUser
cn: kachallah
sn: kachallah
uid: kachallah
AstAccountContext: internal
AstAccountCallerID: kachallah <820>
AstAccountRealmedPassword: passer
AstAccountQualify: yes
AstAccountNAT: yes
AstAccountType: friend
AstAccountHost: dynamic
AstAccountMailbox: 820@default
AstAccountCanReinvite: yes
AstAccountAllowedCodec: alaw
AstAccountLastQualifyMilliseconds: 500
# /etc/ldap# vim exten1.ldif
on génére le ldif pour le dialplan
dn: cn=820,ou=extensions,ou=asterisk,dc=asterisk,dc=sn
objectClass: top
objectClass: inetOrgPerson
objectClass: AsteriskExtension
cn: 820
sn: 820
AstContext: internal
AstExtension: 820
AstPriority: 1
AstApplication: Answer
dn: cn=820,ou=extensions,ou=asterisk,dc=asterisk,dc=sn
objectClass: top
objectClass: inetOrgPerson
objectClass: AsteriskExtension
cn: 820
sn: 820
AstContext: internal
AstExtension: 820
AstPriority: 2
AstApplication: Dial
AstApplicationData: SIP/kachallah
dn: cn=820,ou=extensions,ou=asterisk,dc=asterisk,dc=sn
objectClass: top
objectClass: inetOrgPerson
objectClass: AsteriskExtension
cn: 820
sn: 820
AstContext: internal
AstExtension: 820
AstPriority: 3
AstApplication: Voicemail
AstApplicationData: 820@default
dn: cn=820,ou=extensions,ou=asterisk,dc=asterisk,dc=sn
objectClass: top
objectClass: inetOrgPerson
objectClass: AsteriskExtension
cn: 820
sn: 820
AstContext: internal
AstExtension: 820
AstPriority: 4
AstApplication: Hangup
Ajoutons autant que nous souhaitons.
Nous ajoutons aussi l’utilisateur akhibou avec pout extension 821
10. Ajout des fichiers ldif
# /etc/ldap# ldapadd -x -D "cn=admin,dc=asterisk,dc=sn -W -f racine.ldif
# /etc/ldap# ldapadd -x -D "cn=admin,dc=asterisk,dc=sn -W -f asterisk.ldif
# /etc/ldap# ldapadd -x -D "cn=admin,dc=asterisk,dc=sn -W -f user1.ldif
# /etc/ldap# ldapadd -x -D "cn=admin,dc=asterisk,dc=sn -W -f exten1.ldif
Rappel:
- -x : permet d'utiliser une authentification simple
- -D : permet de se connecter avec l'utilisateur indiqué
- -W : permet de ne pas saisir le mot de passe de l'admin LDAP dans la commande
- -f : permet de spécifier un fichier LDIF à ajouter à l'annuaire LDAP
Verification dans phpldapadmin
Page d'authentification
Dashboard
# vim /etc/asterisk/res_ldap.conf
[_general]
host=127.0.0.1
port=389
protocol=3
basedn=ou=asterisk,dc=asterisk,dc=sn
pass=passer
user=cn=admin,dc=asterisk,dc=sn
[sip]
name=uid
callerid=AstAccountCallerID
canreinvite=AstAccountCanReinvite
context=AstAccountContext
host=AstAccountHost
type=AstAccountType
mailbox=AstAccountMailbox
md5secret=userPassword
fullcontact=AstAccountFullContact
nat=AstAccountNAT
qualify=AstAccountQualify
allow=AstAccountAllowedCodec
useragent=AstAccountUserAgent
lastms=AstAccountLastQualifyMilliseconds
additionalFilter=(objectClass=AsteriskSIPUser)
[extensions]
context=AstContext
exten=AstExtension
priority=AstPriority
app=AstApplication
appdata=AstApplicationData
additionalFilter=(objectClass=AsteriskExtension)
# vim /etc/asterisk/extconfig.conf
sipusers=>ldap,"ou=users,ou=asterisk,dc=asterisk,dc=sn",sip
sippeers=>ldap,"ou=users,ou=asterisk,dc=asterisk,dc=sn",sip
extensions=>ldap,"ou=extensions,ou=asterisk,dc=asterisk,dc=sn",extensions
# vim /etc/asterisk/sip.conf
[general]
rtcachefriends=yes
callevents=yes
realm=asterisk.sn
# vim /etc/asterisk/extensions.conf
Inclure dans la section public et default notre context : internal
Include => internal
exten => 820,1,Dial(SIP/kachallah)
exten => 820,2,Hangup()
exten => 821,1,Dial(SIP/akhibou)
exten => 820,1,hangup()
- Demarrage du serveur
Recharger le module
Nous constatons que les utilisateurs akhibou et kachallah se sont bien connectés.
- Test d’appel
User 821 appel le 820
Sur la console d’asterisk on remarque cela.
Conclusion
Notre objectif étant de coupler asterisk à Ldap, d’après ces captures nous avons atteint notre but. Ainsi donc nous nous fixons comme perspective d’ajouter le chat à ce dernier.