Skip to content

description: > Leer hoe u authenticatie voor agenten en klantgebruikers kunt realiseren in het OTOBO/Znuny ticketsysteem met OpenID Connect (OIDC).

OpenID Connect integreren in OTOBO (Agenten en Klanten)

Met OpenID Connect (OIDC) kunnen zowel agenten als klantgebruikers gemakkelijk en veilig worden geauthenticeerd in het OTOBO ticketsysteem. Gebruikersbeheer wordt centraal beheerd via een externe Identity Provider (IdP) zoals Azure AD of Keycloak.

Vereisten

  • OTOBO 11 of hoger
  • OpenID Connect-compatibele Identity Provider (Azure AD, Keycloak, Auth0 etc.)
  • Toegang tot het bestand Kernel/Config.pm

Agent Login configureren met OpenID Connect

De integratie voor agenten wordt gedaan in Kernel/Config.pm.

Voorbeeldconfiguratie

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

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

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

# Optionele mapping van groepen/rollen
$Self->{'AuthModule::OpenIDConnect::RoleMap'} = {
    groups => {
        admins  => 'admin',
        support => 'support',
    },
};

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

Klantgebruiker Login configureren met OpenID Connect

Klantgebruikers kunnen ook worden geauthenticeerd via OpenID Connect.

Voorbeeldconfiguratie voor klantgebruikers

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

$Self->{'Customer::AuthModule::OpenIDConnect::Config'}{ClientSettings} = {
    ClientID     => 'JOUW-KLANTEN-CLIENT-ID',
    ClientSecret => 'JOUW-KLANTEN-CLIENT-SECRET',
    RedirectURI  => 'https://jouw-domein.nl/otobo/customer.pl?Action=Login',
};

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

# Automatische aanmaak van klantgebruikers
$Self->{'Customer::AuthModule::OpenIDConnect::AutoCreateUser'} = 1;

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

Azure AD optimaal configureren (Voorbeeld)

  1. Registreer een nieuwe app in Azure Active Directory

  2. Voeg machtigingen toe voor "openid", "profile" en "email"

  3. Stel de Redirect-URL's in:

    • Agenten: https://jouw-domein.nl/otobo/index.pl?Action=Login
    • Klanten: https://jouw-domein.nl/otobo/customer.pl?Action=Login
  4. Configureer claims (given_name, family_name) onder "Token Configuration"


Login testen

Na de configuratie en herstart van de webserver kunnen agenten en klantgebruikers gemakkelijk worden geauthenticeerd via uw externe IdP. Nieuwe gebruikers worden automatisch aangemaakt in OTOBO, indien geconfigureerd.


Voordelen van OIDC-integratie in OTOBO

  • Centrale en veilige authenticatie
  • Uniform identiteitsbeheer
  • Automatische aanmaak van gebruikers
  • Minder administratieve inspanning

Verder lezen