Inleiding
Kerberos SSO (Single Sign-On) maakt een naadloze aanmelding van uw agenten via Active Directory mogelijk, zonder dat wachtwoorden in plaintext worden overgedragen. In een Docker-gebaseerde OTOBO-installatie wordt hiervoor NGINX als webproxy met het SPNEGO-module gebruikt, dat in een aparte "builder"-container wordt gecompileerd. Vervolgens wordt het dynamisch gegenereerde module (ngx_http_auth_spnego_module.so
) overgenomen in de daadwerkelijke NGINX-container en wordt de standaardconfiguratie vervangen door een Kerberos-geënablede configuratie :contentReference[oaicite:0]{index=0}.
Daarmee volgen we de bewezen aanpak in het officiële OTOBO Docker-project, dat een duidelijke scheiding tussen build- en runtime-stages realiseert .
In dit artikel ontvangt u:
- Een uitgebreid overzicht van de verschillen tussen OTOBO en Znuny in de context van Kerberos SSO.
- Een stap-voor-stap-handleiding van de AD-voorbereiding tot de Docker-configuratie.
- Tips voor debugging, browser-instellingen en best practices voor verschillende OTOBO-versies.
Verschillen tussen OTOBO en Znuny
Hoewel OTOBO en Znuny functioneel zeer vergelijkbaar zijn (beide komen voort uit het oorspronkelijke OTRS-project), zijn er in de Kerberos-context de volgende fijnafstemmingen:
- Configuratiepaden: OTOBO gebruikt standaard
/opt/otobo-docker/nginx-conf/krb5.conf
, Znuny gebruikt in de regel/opt/znuny/nginx-conf/krb5.conf
. - Sjabloonbestanden: De NGINX-sjablonen verschillen licht in naam en placeholder-syntaxis; OTOBO levert een bestand
otobo_nginx-kerberos.conf.template
, Znuny een soortgelijk benaamd bestandznuny_nginx-kerberos.conf.template
. - Versiebeheer: OTOBO 11.x brengt uitgebreide SSO-parameters ("KerberosAdminServer", "KerberosDefaultDomain"), die in Znuny 6.x nog ontbreken.
Vereisten
- Active Directory met Kerberos (Realm en KDC reeds geconfigureerd).
- 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-oplossingen werken.
- Een A-record voor uw OTOBO-FQDN (geen CNAME!), bijv.
1. Active Directory-gebruiker en SPN
1.1 Gebruiker aanmaken
Maak in uw AD een toegewezen service-account aan, bijv. HTTP/otobo.example.com
(UserPrincipalName). Let op:
- Hoofdlettergevoeligheid bij
HTTP/
; Kerberos verwacht exact deze prefix :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][1]).-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.keytab
2. 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/
Daarmee wordt het SPNEGO-module gecompileerd dat compatibel is met uw NGINX-release ([extras.getpagespeed.com][2]).
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_module
in regel 4 invoegen. - Envsubst-scripts genereren
/etc/krb5.conf
uit sjabloondata.
3. Docker-volumes & nginx-sjablonen
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-nginx
3.2 docker-compose
-override
Maak docker-compose/otobo-nginx-custom-config.yml
:
version: '3.7'
services:
nginx:
volumes:
- otobo_nginx_custom_config:/etc/nginx/config/template-custom
Activeer in het hoofd-.env
:
COMPOSE_FILE=docker-compose.yml:docker-compose/otobo-nginx-custom-config.yml
NGINX_ENVSUBST_TEMPLATE_DIR=/etc/nginx/config/template-custom
4. .env
-aanpassingen
Bewaar uw oude
/opt/otobo-docker/.env
:bashmv .env .env.bak cp .docker_compose_env_https_kerberos .env
Voeg 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.com
SSL-certificaten en DB-wachtwoorden overnemen 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`
Commenteer LDAP/DB-auth uit en voeg in uw `Kernel/Config.pm` toe:
```perl
$Self->{AuthModule} = 'Kernel::System::Auth::HTTPBasicAuth';
$Self->{'AuthModule::HTTPBasicAuth::ReplaceRegExp'} = '^(.+?)@.+?$';
```
Daarmee wordt `REMOTE_USER` correct geïnterpreteerd als login ([doc.otobo.de][1]).
### 5.2 Activatie in het Admin-Interface
* **Systeemconfiguratie**:
* `Customer::AuthModule` op `HTTPBasicAuth` zetten.
* `AuthModule::HTTPBasicAuth::ReplaceRegExp` overnemen.
* **Kernel/Config** -> **Deploy** uitvoeren.
## 6. Browser-instellingen
Om SPNEGO te laten werken, moet uw browser de host als **trusted** accepteren:
### Chrome / Edge / IE
* „Internetopties“ → **Beveiliging** → **Lokale intranetsites** → **Sites**
* Domein `https://otobo.example.com` toevoegen en „Geïntegreerde Windows-verificatie“ activeren ([doc.otobo.de][1]).
### Firefox
* `about:config` in de adresbalk invoeren.
* `network.negotiate-auth.trusted-uris = https://otobo.example.com`
* `network.negotiate-auth.delegation-uris = https://otobo.example.com`
## 7. Debugging & Troubleshooting
1. **NGINX-logs controleren**
```bash
docker logs otobo_nginx_1 -f
```
2. **In de container stappen**
```bash
docker exec -it otobo_nginx_1 bash
cat /etc/krb5.conf
klist -e
```
3. **SPN-token ophalen**
```bash
env KRB5_TRACE=/dev/stdout kvno HTTP/otobo.example.com@EXAMPLE.COM
```
4. **Keytab testen**
```bash
kinit -VV -k -t /etc/krb5.keytab HTTP/otobo.example.com@EXAMPLE.COM
```
Fout `KDC cannot fulfill request` → DNS/SPN onjuist ([plugins.miniorange.com][3]).
## 8. Best practices & Security
* **Eigen Keytab**: Gebruik nooit het LDAP-sync-service-account opnieuw, vermijd wachtwoordcollisies .
* **Least Privilege**: Verleen alleen minimale benodigde AD-rechten voor het SSO-account.
* **Keytab-rotatie**: Vernieuw het Keytab regelmatig om de 90 dagen.
* **TLS voor KDC**: Activeer `ldaps://` of GSSAPI via TLS als dat mogelijk is.
* **Monitoring**: Bewaak met tools als `klist` en `kvno` automatisch de Kerberos-tickets.
---
Met deze uitgebreide handleiding is uw OTOBO Docker-installatie optimaal voorbereid voor Kerberos SSO – veilige, onderhoudsvriendelijke en schaalbare authenticatie inclusief!
---
**Bronnen:**
* rotheross/otobo-nginx-kerberos-webproxy op Docker Hub ([hub.docker.com][4])
* SPNEGO HTTP Auth NGINX Module (stnoonan) ([extras.getpagespeed.com][2])
* Officiële OTOBO Installatie-Doku (11.0 SSO Kerberos) ([doc.otobo.de][1])
* GitHub Issue #81: NGINX Kerberos broken ([github.com][5])
* miniOrange Kerberos SSO Guide ([plugins.miniorange.com][3])
* OTOBO Docker Override HTTPS-Kerberos ([github.com][6])
* OTOBO Ontwikkelaars- en beheerdershandleidingen
* Microsoft Docs: ktpass.exe ([community.znuny.org][7])
* Mozilla MDN: SPNEGO in Firefox ([doc.otobo.de][1])
* NGINX Docs: dynamic modules ([extras.getpagespeed.com][2])