Introductie
Kerberos SSO (Single Sign-On) maakt een naadloze aanmelding voor uw agenten via Active Directory mogelijk, zonder dat wachtwoorden in platte tekst worden verzonden. In een op Docker gebaseerde OTOBO-installatie wordt hiervoor NGINX als webproxy gebruikt met de SPNEGO-module, die in een aparte "builder"-container wordt gecompileerd. Vervolgens wordt de dynamisch gegenereerde module (ngx_http_auth_spnego_module.so) overgenomen in de eigenlijke NGINX-container en wordt de standaardconfiguratie vervangen door een Kerberos-compatibele :contentReference[oaicite:0]{index=0}. Hiermee volgen we de best practices van het officiële OTOBO Docker-project, dat een duidelijke scheiding tussen build- en runtime-stages realiseert.
In dit artikel vindt u:
- Een uitgebreid overzicht van de verschillen tussen OTOBO en Znuny in de context van Kerberos SSO.
- Een stapsgewijze handleiding van de AD-voorbereiding via keytab-creatie tot de Docker-configuratie.
- Tips voor debugging, browserinstellingen en best practices voor verschillende OTOBO-versies.
Verschillen tussen OTOBO en Znuny
Hoewel OTOBO en Znuny functioneel zeer vergelijkbaar zijn (beide stammen af van het oorspronkelijke OTRS-project), zijn er in de Kerberos-context de volgende fijne aanpassingen:
- Configuratiepaden: OTOBO gebruikt standaard
/opt/otobo-docker/nginx-conf/krb5.conf, Znuny gebruikt doorgaans/opt/znuny/nginx-conf/krb5.conf. - Template-bestanden: De NGINX-templates verschillen enigszins in namen en placeholder-syntax; OTOBO levert een bestand
otobo_nginx-kerberos.conf.template, Znuny een vergelijkbaar genaamdznuny_nginx-kerberos.conf.template. - Versiebeheer: OTOBO 11.x brengt uitgebreide SSO-parameters ("KerberosAdminServer", "KerberosDefaultDomain") met zich mee, die in Znuny 6.x nog ontbreken.
Vereisten
- Active Directory met Kerberos (Realm en KDC reeds ingesteld).
- Een OTOBO Docker-setup volgens Officiële installatie met Docker :contentReference[oaicite:2]{index=2}.
- DNS-records:
- Een A-record voor uw OTOBO FQDN (geen CNAME!), bijv.
otobo.example.com → 192.0.2.10. - Reverse lookup voor de hostnaam, zodat Kerberos SPN-resoluties werken.
- Een A-record voor uw OTOBO FQDN (geen CNAME!), bijv.
1. Active Directory Gebruikers en SPN
1.1 Gebruiker aanmaken
Maak in uw AD een speciale service-account aan, bijv. HTTP/otobo.example.com (UserPrincipalName). Let op:
- Hoofdletters bij
HTTP/; Kerberos verwacht exact dit voorvoegsel :contentReference[oaicite:3]{index=3}. - Geen speciale tekens in het wachtwoord (bijv.
&).
1.2 SPN en Keytab genereren
Meld u aan op een DC met beheerdersrechten en gebruik ktpass.exe:
ktpass.exe \
-princ HTTP/otobo.example.com@EXAMPLE.COM \
-mapUser EXAMPLE\\otobo-svc \
-crypto All \
-pass SvcUserPassword \
-ptype KRB5_NT_PRINCIPAL \
-out C:\krb5.keytab-princ: SPN met Realm in hoofdletters.-mapUser: SAM-accountnaam (pre-W2K), bijv.otobo-svc(doc.otobo.de).-out: Pad naar de keytab op de DC.
Verplaats vervolgens de keytab naar de Docker-host:
docker_admin> mkdir -p /opt/otobo-docker/nginx-conf
docker_admin> mv /path/to/krb5.keytab /opt/otobo-docker/nginx-conf/krb5.keytab2. NGINX met SPNEGO-module
2.1 Build-stage in Dockerfile
Het officiële Dockerfile gebruikt een aparte builder met de benodigde dev-pakketten:
FROM nginx:mainline AS builder-for-kerberos
...
RUN apt-get update && apt-get install -y gcc libc-dev make libpcre3-dev zlib1g-dev libkrb5-dev wget
WORKDIR /usr/src
RUN wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \
&& wget https://github.com/stnoonan/spnego-http-auth-nginx-module/archive/${SPNEGO_AUTH_COMMIT_ID}.tar.gz
RUN tar -xzf nginx.tar.gz \
&& tar -xzf spnego-http-auth.tar.gz \
&& cd nginx-${NGINX_VERSION} \
&& ./configure --with-compat ${NGINX_CONFIG} --add-dynamic-module=../spnego-http-auth-nginx-module-${SPNEGO_AUTH_COMMIT_ID_FILE} \
&& make modules \
&& cp objs/ngx_http_auth_spnego_module.so /usr/lib/nginx/modules/Hiermee wordt de SPNEGO-module compatibel met uw NGINX-release gecompileerd (extras.getpagespeed.com).
2.2 Configuratie in de runtime-container
FROM nginx:mainline AS otobo-nginx-kerberos-webproxy
COPY --from=builder-for-kerberos /usr/lib/nginx/modules/ngx_http_auth_spnego_module.so /usr/lib/nginx/modules
RUN apt-get update && apt-get install -y krb5-user libpam-krb5 libpam-ccreds krb5-multidev libkrb5-dev
COPY templates/ kerberos/templates
COPY docker-entrypoint.d/21-envsubst-on-krb5-conf.sh /docker-entrypoint.d/
RUN sed -i '4i load_module modules/ngx_http_auth_spnego_module.so;' /etc/nginx/nginx.conf- Module-load:
load_modulein regel 4 invoegen. - Envsubst-scripts genereren
/etc/krb5.confuit templategegevens.
3. Docker-volumes & nginx-templates
3.1 Aangepast volume aanmaken
docker volume create otobo_nginx_custom_config
mp=$(docker volume inspect --format '{{ .Mountpoint }}' otobo_nginx_custom_config)
docker create --name tmp-nginx rotheross/otobo-nginx-webproxy:latest-11_0
docker cp tmp-nginx:/etc/nginx/templates/otobo_nginx-kerberos.conf.template.hidden $mp/otobo_nginx.conf.template
docker rm tmp-nginx3.2 docker-compose-override
Maak docker-compose/otobo-nginx-custom-config.yml aan:
version: '3.7'
services:
nginx:
volumes:
- otobo_nginx_custom_config:/etc/nginx/config/template-customActiveer in de hoofd .env:
COMPOSE_FILE=docker-compose.yml:docker-compose/otobo-nginx-custom-config.yml
NGINX_ENVSUBST_TEMPLATE_DIR=/etc/nginx/config/template-custom4. .env-aanpassingen
Maak een back-up van uw oude
/opt/otobo-docker/.env:bashmv .env .env.bak cp .docker_compose_env_https_kerberos .envVoeg de Kerberos-variabelen toe:
dotenvOTOBO_NGINX_KERBEROS_KEYTAB=/opt/otobo-docker/nginx-conf/krb5.keytab OTOBO_NGINX_KERBEROS_CONFIG=/opt/otobo-docker/nginx-conf/krb5.conf OTOBO_NGINX_KERBEROS_SERVICE_NAME=HTTP/otobo.example.com OTOBO_NGINX_KERBEROS_REALM=EXAMPLE.COM OTOBO_NGINX_KERBEROS_KDC=dc1.example.com OTOBO_NGINX_KERBEROS_ADMIN_SERVER=dc1.example.com OTOBO_NGINX_KERBEROS_DEFAULT_DOMAIN=example.comNeem SSL-certificaten en DB-wachtwoorden over uit uw oude
.env.bak.
Start vervolgens met:
docker-compose down && docker-compose up -d
``` :contentReference[oaicite:6]{index=6}.
## 5. OTOBO-configuratie
### 5.1 Auth-module in `Kernel/Config.pm`
Commentaar uit LDAP/DB-auth en voeg toe in uw `Kernel/Config.pm`:
```perl
$Self->{AuthModule} = 'Kernel::System::Auth::HTTPBasicAuth';
$Self->{'AuthModule::HTTPBasicAuth::ReplaceRegExp'} = '^(.+?)@.+?$';Hiermee wordt REMOTE_USER correct geïnterpreteerd als login (doc.otobo.de).
5.2 Activering in het admin-interface
Systeemconfiguratie:
Customer::AuthModuleinstellen opHTTPBasicAuth.AuthModule::HTTPBasicAuth::ReplaceRegExpovernemen.
Kernel/Config -> Deploy uitvoeren.
6. Browserinstellingen
Om SPNEGO te laten werken, moet uw browser de host als vertrouwd accepteren:
Chrome / Edge / IE
- "Internetopties" → Beveiliging → Lokale Intranet-sites → Sites
- Domein
https://otobo.example.comtoevoegen en "Geïntegreerde Windows-authenticatie" inschakelen (doc.otobo.de).
Firefox
about:configin de adresbalk invoeren.network.negotiate-auth.trusted-uris = https://otobo.example.comnetwork.negotiate-auth.delegation-uris = https://otobo.example.com
7. Debugging & Troubleshooting
NGINX-logs controleren
bashdocker logs otobo_nginx_1 -fDe container in gaan
bashdocker exec -it otobo_nginx_1 bash cat /etc/krb5.conf klist -eSPN-token ophalen
bashenv KRB5_TRACE=/dev/stdout kvno HTTP/otobo.example.com@EXAMPLE.COMKeytab testen
bashkinit -VV -k -t /etc/krb5.keytab HTTP/otobo.example.com@EXAMPLE.COMFoutmelding
KDC cannot fulfill request→ DNS/SPN onjuist (plugins.miniorange.com).
8. Best Practices & Beveiliging
- Eigen Keytab: Gebruik nooit opnieuw het LDAP-sync-service-account, vermijd wachtwoordconflicten.
- Least Privilege: Geef alleen de minimaal benodigde AD-rechten aan het SSO-account.
- Keytab-rotatie: Vernieuw de keytab regelmatig, elke 90 dagen.
- TLS voor KDC: Indien mogelijk, activeer
ldaps://of GSSAPI via TLS. - Monitoring: Monitor Kerberos-tickets geautomatiseerd met tools zoals
klistenkvno.
Met deze uitgebreide handleiding is uw OTOBO Docker-instantie optimaal voorbereid op Kerberos SSO – veilige, onderhoudbare en schaalbare authenticatie inbegrepen!
Bronnen:
- rotheross/otobo-nginx-kerberos-webproxy op Docker Hub (hub.docker.com)
- SPNEGO HTTP Auth NGINX Module (stnoonan) (extras.getpagespeed.com)
- Officiële OTOBO Installatie-documentatie (11.0 SSO Kerberos) (doc.otobo.de)
- GitHub Issue #81: NGINX Kerberos broken (github.com)
- miniOrange Kerberos SSO Guide (plugins.miniorange.com)
- OTOBO Docker Override HTTPS-Kerberos (github.com)
- OTOBO Ontwikkelaars- en Administratorhandleidingen
- Microsoft Docs: ktpass.exe (community.znuny.org)
- Mozilla MDN: SPNEGO in Firefox (doc.otobo.de)
- NGINX Docs: dynamic modules (extras.getpagespeed.com)