Agent logujący się do systemu zgłoszeń osobnym hasłem to kolejne konto do zapamiętania i kolejne miejsce, gdzie to hasło może wyciec. Skoro firma ma już Keycloak do reszty systemów, naturalnym krokiem jest podpięcie pod niego również panelu agenta w Zammadzie — klienci dalej logują się (jeśli w ogóle korzystają z portalu) zwykłym hasłem, bez żadnej zmiany po ich stronie.
Dwie metody logowania naraz, nie zamiast siebie
Zammad nie wymusza jednego sposobu logowania na wszystkich użytkownikach naraz. Wewnętrzne logowanie e-mail/hasło zostaje aktywne dla klientów, a SSO dokłada się jako dodatkowa opcja na ekranie logowania — widoczna dla każdego, kto tam trafi, ale realnie używana tylko przez osoby z kontem w firmowym Keycloaku.
Pierwsza pułapka: brak pola na sekret klienta
Generyczna integracja OpenID Connect w Zammadzie liczy wyłącznie na PKCE — w formularzu konfiguracji nie ma pola na client secret. Klienta w Keycloaku trzeba więc ustawić jako publicznego (Client authentication wyłączone), inaczej wymiana kodu na token się wysypie. To nie jest uproszczenie kosztem bezpieczeństwa: samo PKCE wystarczająco chroni tę wymianę, pod warunkiem że redirect URI jest ściśle dopasowany.
Druga pułapka: dokładność redirect URI
Keycloak dopasowuje adres przekierowania znak w znak. Końcowy ukośnik, http zamiast https, inna subdomena — każda z tych rzeczy kończy się komunikatem „Invalid parameter: redirect_uri”. Wartość trzeba skopiować dokładnie z ekranu konfiguracji w Zammadzie, nie przepisywać z pamięci.
Trzecia pułapka: konto już istnieje
Jeśli adres e-mail z tożsamości Keycloak pokrywa się z już istniejącym kontem w Zammadzie (choćby testowym), pierwsze logowanie przez SSO kończy się błędem walidacji — Zammad próbuje założyć nowe konto, a nie może, bo e-mail jest zajęty. Rozwiązaniem nie jest globalny przełącznik automatycznego łączenia kont, bo obejmuje wszystkich użytkowników naraz. Lepiej połączyć konto świadomie i ręcznie: zalogować się normalnie hasłem na docelowe konto, wejść w Profil → Linked Accounts i tam podłączyć tożsamość Keycloak — nawet jeśli adresy e-mail w obu systemach się różnią.
Najwięcej czasu przy takiej integracji zajmuje nie sama konfiguracja, tylko te trzy pułapki — każda kończy się innym, dość niejasnym komunikatem błędu.
Efekt końcowy: pracownicy logują się do Zammada tym samym kontem, którego używają wszędzie indziej, a odebranie dostępu przy odejściu z firmy dzieje się w jednym miejscu — w Keycloaku — zamiast wymagać osobnej zmiany hasła w systemie zgłoszeń.