Skip to content

Integrar OpenID Connect no OTOBO (Agentes e Clientes)

Com o OpenID Connect (OIDC), tanto agentes quanto usuários clientes podem ser autenticados de forma conveniente e segura no sistema de tickets OTOBO. O gerenciamento de usuários é feito centralmente através de um provedor de identidade (IdP) externo, 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

Configurar Login de Agente com OpenID Connect

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

Exemplo de Configuração

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

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

$Self->{'AuthModule::OpenIDConnect::Config'}{ProviderSettings} = {
    OpenIDConfiguration => 'https://seu-provider.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',
    },
};

# Debugging (temporário)
$Self->{'AuthModule::OpenIDConnect::Debug'}->{'LogIDToken'} = 1;

Configurar Login de Usuário Cliente com OpenID Connect

Usuários clientes também podem ser autenticados via OpenID Connect.

Exemplo de Configuração para Usuários Clientes

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

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

$Self->{'Customer::AuthModule::OpenIDConnect::Config'}{ProviderSettings} = {
    OpenIDConfiguration => 'https://seu-provider.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ário cliente
$Self->{'Customer::AuthModule::OpenIDConnect::AutoCreateUser'} = 1;

# Debugging opcional
$Self->{'Customer::AuthModule::OpenIDConnect::Debug'}->{'LogIDToken'} = 1;

Configurar Azure AD de Forma Otimizada (Exemplo)

  1. Registrar um novo aplicativo no Azure Active Directory

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

  3. Definir URLs de redirecionamento:

    • Agentes: https://sua-dominio.de/otobo/index.pl?Action=Login
    • Clientes: https://sua-dominio.de/otobo/customer.pl?Action=Login
  4. Configurar claims (given_name, family_name) em "Token Configuration"


Testar o Login

Após a configuração e reinicialização do servidor web, agentes e usuários clientes podem ser autenticados convenientemente através do seu IdP externo. Novos usuários serão criados automaticamente no OTOBO, se configurado.


Vantagens da Integração OIDC no OTOBO

  • Autenticação centralizada e segura
  • Gerenciamento unificado de identidades
  • Criação automática de usuários
  • Menor carga administrativa