Estou testando o OTRS 6 com o módulo ITSM. No momento, estou apenas testando em nosso ambiente DEV, então não seria um problema abandonar tudo e começar do zero, se for a maneira mais fácil. Pretendo colocá-lo em produção em breve.
Eu instalei "pelo livro" usando os documentos oficiais e funcionou como um encanto! Foi instalado no Ubuntu Server 18.04 LTS. Eu tenho todos os usuários autenticando localmente usando o banco de dados do usuário no MySQL. Eu tinha clientes, agentes e administradores, todos capazes de autenticar e receber o painel de usuário correto.
Depois disso, consegui integrar com sucesso o OTRS ao meu AD, mas com um problema: todos os meus usuários do AD são mapeados como clientes, todos os meus administradores de domínio (que também pertencem ao grupo OTRS_Admins AD) são agentes e... .Fiquei sem conta para gerenciar o OTRS. Nenhum administrador.
O que devo fazer? Como posso mapear meus administradores de domínio para serem administradores OTRS e não agentes? Como mapear alguns dos meus Usuários de Domínio para serem Agentes? Estou fazendo algo errado? Estou completamente perdido.
A documentação oficial não ajuda muito, e não encontrei no Google ninguém com a minha necessidade específica.
Meu (redigido) Config.pm:
$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
### OTRS Admin Auth
###
$Self->{'AuthModule::LDAP::Host'} = '192.168.179.2'; # AD Server
$Self->{'AuthModule::LDAP::BaseDN'} = 'dc=test,DC=local'; # Domain
$Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::GroupDN'} = 'CN=OTRS_Admins,CN=Users,DC=test,DC=local'; #OTRS Admin group
$Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
$Self->{'AuthModule::LDAP::SearchUserDN'} = 'svc_otrs'; #OTRS service user
$Self->{'AuthModule::LDAP::SearchUserPw'} = 'Passw0rd'; #And its passwird
$Self->{'AuthModule::LDAP::AlwaysFilter'} = '';
$Self->{'AuthModule::LDAP::Params'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
sscope => 'sub'
};
### User Sync
### AD <==> DB OTRS (MySQL)
$Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host'} = '192.168.179.2'; # AD SRV
$Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=test,DC=local'; # Domain
$Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'svc_otrs';
$Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'Passw0rd';
$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
# DB -> LDAP
UserFirstname => 'givenName',
UserLastname => 'sn',
UserEmail => 'mail',
};
$Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [
'users', 'basic_admin',
];
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host'} = '192.168.179.2';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=test,DC=local';
$Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'svc_otrs';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'Passw0rd';
$Self->{CustomerUser} = {
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => '192.168.179.2', # AD Server
BaseDN => 'dc=test,DC=local', #Domain
SSCOPE => 'sub',
UserDN =>'svc_otrs', #OTRS Service User
UserPw => 'Passw0rd', #its password
AlwaysFilter => '(&(samAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))',
SourceCharset => 'utf-8',
DestCharset => 'utf-8',
},
CustomerKey => 'sAMAccountName',
CustomerID => 'mail',
CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 10000,
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
Map => [
# note: Login, Email and CustomerID needed!
#[ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ],
[ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ],
[ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ],
[ 'UserLogin', 'Login', 'sAMAccountName', 1, 1, 'var' ],
[ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ],
[ 'UserCustomerID', 'CustomerID', 'mail', 0, 1, 'var' ],
[ 'UserPhone', 'Phone', 'telephonenumber', 1, 0, 'var' ],
#[ 'UserAddress', 'Address', 'postaladdress', 1, 0, 'var' ],
#[ 'UserComment', 'Comment', 'description', 1, 0, 'var' ],
],
};
Na verdade, este é um problema de três partes:
Problema 1: perdi meu DB Backend Em
Config.pm
, eu havia inserido a seguinte linha para selecionar o backend do Agente:$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
Bem, o que esta linha faz, ela substitui o seletor de back-end original em outro lugar do sistema. Portanto, para ter os usuários DB Backend Admin e também os usuários do agente LDAP, você deve usar a maneira própria (e documentada!) do OTRS de ter vários back-ends, que é anexar um sufixo numeral à instância do módulo logo após
AuthModule
):$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
Claro, você tem que colocar o numeral em todas as propriedades dos módulos:
(Compare isso com o código postado acima, na pergunta original.)
Para ser justo, há uma seção no Manual de Administração do OTRS explicando como alterar o back-end e como ter mais de um back-end. Mas as informações que, se você usar
$Self->{'AuthModule'}
em vez de$Self->{'AuthModule1'}
substituir o back-end nativo do banco de dados, em vez de executar os dois lado a lado, estão ausentes. Demorou muito cérebro morto para descobrir isso.Isso resolveu o problema de ter perdido meus usuários Admin, que estavam todos no DB Backend original. Todos os agentes LDAP não eram administradores completos, portanto, eles podiam responder a tickets, mas não gerenciar o sistema OTRS como administradores. Com isso eu tinha os dois tipos de usuários.
Isso nos leva ao segundo problema.
Problema 2: os usuários do agente do back-end do LDAP não tinham permissões de administrador
Quero dizer, devo ser capaz de criar um usuário Agent no meu AD e ele/ela deve ser administrador também. E eles são!
Se em vez de apenas 'users', eu tivesse colocado também 'basic_admin' nessa lista, todos os meus agentes iniciais também seriam administradores. Eu poderia revogar seus privilégios de administrador mais tarde, mas como estava bloqueado fora do OTRS sem usuários de administrador devido ao problema 1, não pude conceder ou revogar nenhum direito de administrador a ninguém.
Eu escolhi, afinal, deixar como está e criar meus Agentes apenas como usuários, porque já tenho meu usuário root@localhost original como administrador (como resolvi o Problema 1) e concederei direitos de administrador manualmente para todos meus futuros administradores. Mas este é outro detalhe não muito bem documentado no OTRS Admin Manual.
Problema 3: OTRS Admin Manual não está completamente atualizado
Eu entendo que, com todos os projetos OpenSource, isso aconteceria de tempos em tempos. Mas existem, aqui e ali, algumas armadilhas devido a informações enganosas, herdadas de versões anteriores do OTRS que não foram atualizadas. Existem algumas propriedades, por exemplo, que são mencionadas no manual, mas não são válidas para a versão 6.
Eu me deparei com um que era para a versão 5 e não foi removido da versão 6. Quer dizer, o link para a página QuickRef das propriedades foi removido, porque a página - e a propriedade - não existe mais, mas ainda é mencionada em outro lugar no manual, nas seções importantes de configuração.