Skip to content

Integracja OpenID Connect w OTOBO (Agenci i Klienci)

Dzięki OpenID Connect (OIDC) agenci i użytkownicy klienccy w systemie biletowym OTOBO mogą być uwierzytelniani w wygodny i bezpieczny sposób. Zarządzanie użytkownikami odbywa się centralnie za pośrednictwem zewnętrznego dostawcy tożsamości (IdP), takiego jak Azure AD lub Keycloak.

Wymagania

  • OTOBO 11 lub nowszy
  • Dostawca tożsamości zgodny z OpenID Connect (Azure AD, Keycloak, Auth0 itp.)
  • Dostęp do pliku Kernel/Config.pm

Konfiguracja logowania agentów za pomocą OpenID Connect

Integracja dla agentów odbywa się w pliku Kernel/Config.pm.

Przykładowa konfiguracja

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

$Self->{'AuthModule::OpenIDConnect::Config'}{ClientSettings} = {
    ClientID     => 'TWOJ-AGENT-CLIENT-ID',
    ClientSecret => 'TWOJ-AGENT-CLIENT-SECRET',
    RedirectURI  => 'https://twoja-domena.pl/otobo/index.pl?Action=Login',
};

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

# Opcjonalne mapowanie grup/ról
$Self->{'AuthModule::OpenIDConnect::RoleMap'} = {
    groups => {
        admins  => 'admin',
        support => 'support',
    },
};

# Debugowanie (tymczasowe)
$Self->{'AuthModule::OpenIDConnect::Debug'}->{'LogIDToken'} = 1;

Konfiguracja logowania użytkowników klientów za pomocą OpenID Connect

Użytkownicy klienccy również mogą być uwierzytelniani za pomocą OpenID Connect.

Przykładowa konfiguracja dla użytkowników klientów

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

$Self->{'Customer::AuthModule::OpenIDConnect::Config'}{ClientSettings} = {
    ClientID     => 'TWOJ-KLIENT-CLIENT-ID',
    ClientSecret => 'TWOJ-KLIENT-CLIENT-SECRET',
    RedirectURI  => 'https://twoja-domena.pl/otobo/customer.pl?Action=Login',
};

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

# Automatyczne tworzenie użytkowników klientów
$Self->{'Customer::AuthModule::OpenIDConnect::AutoCreateUser'} = 1;

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

Optymalna konfiguracja Azure AD (przykład)

  1. Zarejestruj nową aplikację w Azure Active Directory

  2. Dodaj uprawnienia dla „openid”, „profile” i „email”

  3. Ustaw adresy URL przekierowania:

    • Agenci: https://twoja-domena.pl/otobo/index.pl?Action=Login
    • Klienci: https://twoja-domena.pl/otobo/customer.pl?Action=Login
  4. Skonfiguruj roszczenia (claims) (given_name, family_name) w sekcji „Token Configuration”


Testowanie logowania

Po skonfigurowaniu i ponownym uruchomieniu serwera WWW agenci i użytkownicy klienccy mogą wygodnie uwierzytelniać się za pomocą zewnętrznego IdP. Nowi użytkownicy są automatycznie tworzeni w OTOBO, jeśli zostało to skonfigurowane.


Zalety integracji OIDC w OTOBO

  • Centralne i bezpieczne uwierzytelnianie
  • Jednolite zarządzanie tożsamością
  • Automatyczne tworzenie użytkowników
  • Mniejszy nakład pracy administracyjnej

Przydatne linki