Categorias
< All Topics
Print

Integração com Active Directory (ou LDAP) local

Obs: Este artigo não se aplica ao LigeroSmart SaaS, apenas a instalações com acesso ao container neste momento.

A integração que permite aos usuários do AD se autenticarem no LigeroSmart ou mesmo que permite ao LigeroSmart enxergar informações de clientes no AD deve ser parametrizada no arquivo /opt/otrs/Kernel/Config.pm

Neste documento, disponibilizamos trechos de código que devem ser colados neste arquivo, de acordo com a necessidade de integração e, adaptados à realidade de sua organização.

Para realizar tal integração, é necessário que o LigeroSmart possua uma conta de serviço criada no Active Directory ou no LDAP.

Uma forma interessante de verificar se o servidor linux está acessando o servidor de diretórios AD, é utilizando o comando abaixo:

ldapsearch -h 192.168.1.10 -b "DC=DOMINIO,DC=LOCAL" -D "CN=ligero,CN=Users,DC=DOMINIO,DC=LOCAL" -w senha "(objectClass=person)"

Este comando faz a listagem do seu diretório de usuários. É necessário instalar o ldapsearch em seu servidor. No CentOS pode ser instalado com o comando:

yum install openldap-clients

Autenticação de Atendentes

##########################################################################
#  Autenticação de Atendentes                                            #
#- Aqui definimos a integração que permite ao LigeroSmart autenticar usuários   #
#  a partir do Active Directory de sua organização.                      #
#- Importante: os usuário devem possuir o campo “email” preenchido       #
#  no AD para poderem se autenticar                                      #
##########################################################################
    $Self->{AuthModule1} = 'Kernel::System::Auth::LDAP';
    # Abaixo, colocamos o IP ou hostname do servidor
    $Self->{'AuthModule::LDAP::Host1'} = '192.168.30.50';
    # A seguir, o DistinguishedName (DN) onde buscaremos os usuários
    $Self->{'AuthModule::LDAP::BaseDN1'} = 'DC=complemento,DC=net,DC=br';
    # A seguir, a propriedade do AD onde encontraremos o nome de usuário
    $Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName';
    # Aqui definimos em qual grupo o usuário deve estar para poder se logar no LigeroSmart,
    # Este parametro é opcional e pode ser comentado com #
    $Self->{'AuthModule::LDAP::GroupDN1'} = 'CN=Atendentes,OU=LigeroSmart Groups,DC=complemento,DC=net,DC=br';
    # O parametro abaixo não deve ser modificado
    $Self->{'AuthModule::LDAP::AccessAttr1'} = 'member';
    # Aqui definimos o usuário e senha de uma conta que tenha permissão de buscar informações na árvore de nosso AD.
    # É aconselhavel criar um usuário exclusivo para o LigeroSmart
    $Self->{'AuthModule::LDAP::SearchUserDN1'} = 'CN=LigeroSmart,CN=Users,DC=complemento,DC=net,DC=br';
    $Self->{'AuthModule::LDAP::SearchUserPw1'} = 'Brasil123!';
# Note que há o número “1” no fim das definições realizadas entre “{ }”
# O LigeroSmart permite que você se conecte com até 9 módulos diferentes de autenticação, ou 9 ADs diferentes por exemplo.

Sincronização de Atendentes com AD

    # Aqui podemos mapear os atendentes e seus atributos, tais como nome e sobrenome, e-mail etc.
    # Os valores abaixo servem para uma instalação padrão. Adapte para seu sistema.
    $Self->{AuthSyncModule} = 'Kernel::System::Auth::Sync::LDAP';
    $Self->{'AuthSyncModule::LDAP::UserAttr'} = 'DN';
    $Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
    $Self->{'AuthSyncModule::LDAP::Host'} = '192.168.30.50';
    $Self->{'AuthSyncModule::LDAP::BaseDN'} = 'DC=complemento,DC=net,DC=br';
    $Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
    $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=LigeroSmart,CN=Users,DC=complemento,DC=net,DC=br';
    $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'Brasil123!';
    $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
        # DB -> LDAP
        UserFirstname   => 'givenName',
        UserLastname    => 'sn',
        UserEmail       => 'mail',
        UserCargo       => 'description',
        UserPhoneNumber => 'telephoneNumber',
    };
    $Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'member';
# Você pode escolher grupos padrões para seus usuários. Basta descomentar as 3 linhas abaixo e definir os grupos
#    $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [
#        'users',
#    ];

Relacionando grupos do AD com papéis do LigeroSmart

##########################################################################
#- Gestão de papéis do sistema                                           #
#- Aqui você deve fazer as associações entre os grupos                   #
#  do Active Directory e dos papéis no LigeroSmart.                             #
#- Você deve adicionar linhas aqui sempre que criar um novo papel        #
#  no LigeroSmart ou grupo no Active Directory                                  #
##########################################################################

    $Self->{'AuthSyncModule::LDAP::UserSyncRolesDefinition'} = {
        # Primeiro grupo mapeado
        # Grupo no Active Directory – Administradores do LigeroSmart no AD
        'CN=Administradores LigeroSmart,OU=LigeroSmart Groups,DC=complemento,DC=net,DC=br' => {
            # Papel no LigeroSmart - Administrador
            'Administrador' => 1,
        },
        # Segundo Mapeamento
        'CN=Service Desk,OU=LigeroSmart Groups,DC=complemento,DC=net,DC=br' => {
            # Papel no LigeroSmart
            'Atendente de Primeiro Nível' => 1,
        },
        # Terceiro Mapeamento
        'CN=Desenvolvedores,OU=LigeroSmart Groups,DC=complemento,DC=net,DC=br' => {
            'Desenvolvedor' => 1,
# Você pode definir mais que um papél para o mesmo grupo do AD
#            'Papel 2' => 1,
        },
    };

Usuários do AD como Clientes do LigeroSmart

###################################################################
# Exibe os colaboradores do AD como clientes internos             #
# Lembre-se que os usuários no AD devem ter o campo mail          #
# preenchido corretamente                                         #
###################################################################
$Self->{CustomerUser1} = {
    Name => 'Active Directory Complemento',
    Module => 'Kernel::System::CustomerUser::LDAP',
    Params => {
        Host => '192.168.30.50',
        BaseDN => 'DC=complemento,DC=net,DC=br',
        SSCOPE => 'sub',
        UserDN => 'CN=LigeroSmart,CN=Users,DC=complemento,DC=net,DC=br',
        UserPw => 'Brasil123!',
        # A linha abaixo serve para não trazer usuarios desativados:
        # Fonte: http://www.petri.co.il/ldap_search_samples_for_windows_2003_and_exchange.htm
        AlwaysFilter =>
'(&(objectclass=user)(!(objectclass=computer))(!(userAccountControl:1.2.840.113556.1.4.803:=2)))',
        SourceCharset => 'utf-8',
        DestCharset   => 'utf-8',
        Params => {
                port => 389,
                timeout => 120,
                async => 0,
                version => 3,
            },
    },
    CustomerKey => 'sAMAccountName',
    CustomerID => 'mail',
    CustomerUserListFields => ['cn','mail'],
    CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail','givenname', 'sn'],
    CustomerUserSearchPrefix => '*',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 500,
    CustomerUserPostMasterSearchFields => ['mail'],
    CustomerUserNameFields => ['givenname', 'sn'],
    CustomerUserEmailUniqCheck => 0,
    CustomerUserExcludePrimaryCustomerID => 0,
    AdminSetPreferences => 0,
    ReadOnly => 1,
    CacheTTL => 180,
    Map => [
     # note: Login, Email and CustomerID are mandatory!
     # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
        [ 'UserTitle',      'Title',      'title',           1, 0, 'var', '', 0 ],
        [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
        [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
        [ 'UserLogin',      'Username',   'sAMAccountName',             1, 1, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'sAMAccountName',            0, 1, 'var', '', 0 ],
        [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
        [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
        [ 'UserComment',    'Comment',    'dn',     1, 0, 'var', '', 0 ],
        [ 'DN',    'DN',    'dn',     1, 0, 'var', '', 0 ],
    ],
};

Autenticação de Cliente no Active Directory

$Self->{'Customer::AuthModule1'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host1'} = '192.168.30.50';
$Self->{'Customer::AuthModule::LDAP::BaseDN1'} = 'DC=complemento,DC=net,DC=br';
$Self->{'Customer::AuthModule::LDAP::UID1'} = 'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::AccessAttr1'} = 'member';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN1'} = 'CN=LigeroSmart,CN=Users,DC=complemento,DC=net,DC=br';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw1'} = 'Brasil123!';
# A linha abaixo serve para não trazer usuarios desativados: (!(userAccountControl:1.2.840.113556.1.4.803:=2))
# Fonte: http://www.petri.co.il/ldap_search_samples_for_windows_2003_and_exchange.htm
$Self->{'Customer::AuthModule::LDAP::AlwaysFilter1'} =
            '(&(objectclass=user)(!(objectclass=computer))(!(userAccountControl:1.2.840.113556.1.4.803:=2)))';

# $Self->{'Customer::AuthModule::LDAP::Die1'} = 0;
# A linha abaixo serve para permitir que apenas usuários de um determinado grupo acessem o sistema como clientes
# $Self->{'Customer::AuthModule::LDAP::GroupDN1'} = 'CN=Clientes LigeroSmart,OU=LigeroSmart Groups,DC=complemento,DC=net,DC=br';
Anterior Atendimento via Whatsapp
Próxima Como notificar novos chamados no Telegram

1 comentário em “Integração com Active Directory (ou LDAP) local”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Sumário