Couplage asterisk ldap

Publié le par Kachallah Abagana Mahamat

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.

  1. 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

 

  1. 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

 

  1. Installation de LDAP

 

# apt-get install slapd ldap-utils phpldapadmin

 

  1. Configuration

 

  1.  Copie du fichier de configuration

 

# cp /usr/share/doc/slapd/examples/slapd.conf /etc/ldap/

 

  1. Specification du fichier de config

 

# vim /etc/default/slapd

 

SLAPD_CONF=/etc/ldap/slapd.conf

 

  1. Copie du schemas asterisk pour ldap

 

# cp /usr/local/asterisk-14/contrib/scripts/asterisk.ldap-schema /etc/ldap/schema/asterisk.schema

 

  1. 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

 

  1. 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

 

  1. Démarrage du serveur

# /etc/init.d/slapd restart

 

  1. 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()

 

  1. Demarrage du serveur

 

Recharger le module

 

Nous constatons que les utilisateurs akhibou et kachallah se sont bien connectés.

  1. 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.

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
B
C'est trop classe ! Ingénieur de très haut niveau.
Répondre
K
Vraiment ce tres intéressant ingénieur Kachallah. Merci beaucoup pour ce partage
Répondre