Skip to content

Integração do OpenID Connect no OTOBO (Agentes e Clientes)

Com o OpenID Connect (OIDC), é possível autenticar agentes e usuários de clientes de forma confortável e segura no sistema de tickets OTOBO. A gestão de usuários é realizada centralmente por meio de um provedor de identidade externo (IdP), como Azure AD ou Keycloak.

Pré-requisitos

  • OTOBO 11 ou superior
  • Provedor de identidade compatível com OpenID Connect (Azure AD, Keycloak, Auth0, etc.)
  • Acesso ao arquivo Kernel/Config.pm

Configuração do login de agentes com OpenID Connect

A integração para agentes é realizada no arquivo Kernel/Config.pm.

Exemplo de configuração

perl
$Self->{AuthModule} = 'Kernel::System::Auth::OpenIDConnect';

$Self->{'AuthModule::OpenIDConnect::Config'}{ClientSettings} = {
    ClientID     => 'SUA-CLIENT-ID-DE-AGENTE',
    ClientSecret => 'SEU-CLIENT-SECRET-DE-AGENTE',
    RedirectURI  => 'https://seu-dominio.de/otobo/index.pl?Action=Login',
};

$Self->{'AuthModule::OpenIDConnect::Config'}{ProviderSettings} = {
    OpenIDConfiguration => 'https://seu-provedor.de/.well-known/openid-configuration',
    TTL                 => 1800,
};

$Self->{'AuthModule::OpenIDConnect::AuthRequest'}->{ResponseType}    = ['code'];
$Self->{'AuthModule::OpenIDConnect::AuthRequest'}->{AdditionalScope} = [qw/profile email/];

$Self->{'AuthModule::OpenIDConnect::UID'} = 'email';

$Self->{'AuthModule::OpenIDConnect::UserMap'} = {
    email       => 'UserEmail',
    given_name  => 'UserFirstname',
    family_name => 'UserLastname',
};

# Mapeamento opcional de grupos/funções
$Self->{'AuthModule::OpenIDConnect::RoleMap'} = {
    groups => {
        admins  => 'admin',
        support => 'support',
    },
};

# Depuração (temporária)
$Self->{'AuthModule::OpenIDConnect::Debug'}->{'LogIDToken'} = 1;

Configuração do login de usuários de clientes com OpenID Connect

Os usuários de clientes também podem ser autenticados via OpenID Connect.

Exemplo de configuração para usuários de clientes

perl
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::OpenIDConnect';

$Self->{'Customer::AuthModule::OpenIDConnect::Config'}{ClientSettings} = {
    ClientID     => 'SUA-CLIENT-ID-DE-CLIENTE',
    ClientSecret => 'SEU-CLIENT-SECRET-DE-CLIENTE',
    RedirectURI  => 'https://seu-dominio.de/otobo/customer.pl?Action=Login',
};

$Self->{'Customer::AuthModule::OpenIDConnect::Config'}{ProviderSettings} = {
    OpenIDConfiguration => 'https://seu-provedor.de/.well-known/openid-configuration',
    TTL                 => 1800,
};

$Self->{'Customer::AuthModule::OpenIDConnect::AuthRequest'}->{ResponseType}    = ['code'];
$Self->{'Customer::AuthModule::OpenIDConnect::AuthRequest'}->{AdditionalScope} = [qw/profile email/];

$Self->{'Customer::AuthModule::OpenIDConnect::UID'} = 'email';

$Self->{'Customer::AuthModule::OpenIDConnect::UserMap'} = {
    email       => 'UserEmail',
    given_name  => 'UserFirstname',
    family_name => 'UserLastname',
};

# Criação automática de usuários de clientes
$Self->{'Customer::AuthModule::OpenIDConnect::AutoCreateUser'} = 1;

# Depuração opcional
$Self->{'Customer::AuthModule::OpenIDConnect::Debug'}->{'LogIDToken'} = 1;

Configuração ótima do Azure AD (Exemplo)

  1. Registre um novo aplicativo no Azure Active Directory

  2. Adicione permissões para "openid", "profile" e "email"

  3. Defina as URLs de redirecionamento:

    • Agentes: https://seu-dominio.de/otobo/index.pl?Action=Login
    • Clientes: https://seu-dominio.de/otobo/customer.pl?Action=Login
  4. Configure as declarações (given_name, family_name) em "Token Configuration"


Teste de login

Após a configuração e o reinício do servidor web, os agentes e usuários de clientes podem ser autenticados facilmente por meio do seu provedor de identidade externo. Novos usuários são criados automaticamente no OTOBO, se configurado.


Vantagens da integração do OIDC no OTOBO

  • Autenticação centralizada e segura
  • Gestão de identidades unificada
  • Criação automática de usuários
  • Menos esforço administrativo