Terug naar blog

Single Sign-On in mijn homelab: Pocket ID

Waarom ik SSO ben gaan gebruiken in mijn homelab, waarom Authentik voor mij te zwaar was en hoe Pocket ID dat oplost.

Als je een paar self-hosted diensten draait, werkt aparte login nog prima. Je hebt misschien vijf of zes services, je kent de wachtwoorden, en het is niet erg om even in te loggen.

Maar op een gegeven moment telde ik mee hoe vaak ik per week een nieuw account aanmaakte voor iets dat ik al kende. Of hoe lang ik moest nadenken welke applicaties allemaal een apart account nodig hadden als ik iemand anders toegang wilde geven.

Op dat punt begint SSO ineens minder te klinken als iets voor bedrijven.

Wat ik ervan wilde

Ik draai geen bedrijf en heb geen IT-afdeling die ik moet ontzien. Minder accounts bijhouden, minder wachtwoorden onthouden, één plek om toegang te beheren. Dat is het.

Veel applicaties ondersteunen OIDC trouwens al. Als het er toch in zit, is er weinig reden om het niet te gebruiken.

Eerst geprobeerd: Authentik

Authentik is wat je als eerste tegenkomt als je naar SSO-oplossingen zoekt. Het kan alles: OIDC, SAML, LDAP, SCIM. De documentatie is uitgebreid en het wordt actief onderhouden.

Het is ook zwaar. Meerdere containers, een eigen database, een cache-laag. Op een homelab die al vol genoeg staat, is dat behapbaar, maar het voelde al snel meer als een project op zichzelf dan als een hulpmiddel.

Wat me meer dwarszat was de configuratielaag. Authentik werkt met flows, stages en policies. Dat geeft je veel controle, maar voor een simpele OIDC-setup zit er veel tussen je en een werkende login. Op een gegeven moment had ik iets dat deed wat het moest doen, maar ik had geen goed beeld meer van hoe precies. Wijzigingen aanbrengen voelde oncomfortabel omdat ik niet goed kon inschatten wat ik zou breken.

Uiteindelijk was ik meer tijd kwijt aan Authentik zelf dan aan de diensten die ik ermee wilde koppelen.

Overgestapt naar Pocket ID

Pocket ID doet één ding: OIDC. Geen flows, geen policy-lagen, geen LDAP. Je maakt een client aan, vult de redirect URI in, en het werkt.

Ik heb er in een middag meer mee voor elkaar gekregen dan ik bij Authentik in meerdere sessies had gedaan. De interface is sober, de configuratie is beperkt, en dat is precies waarom het prettig werkt.

Ik draai het nu op id.dsyr.nl. Applicaties die OIDC aankunnen, koppel ik er direct aan.

Inloggen met een passkey

Pocket ID ondersteunt geen wachtwoorden. Wie inlogt, doet dat met een passkey. Dat geldt voor mij, maar ook voor iedereen die ik toegang geef.

Dat hoeft geen YubiKey te zijn. De ingebouwde Passwords-app op macOS en iOS ondersteunt passkeys, Bitwarden ook, en de meeste andere wachtwoordbeheerders inmiddels ook. Je hebt een apparaat met biometrie of een hardware security key, en het werkt.

Ik log zelf in met mijn YubiKey. Ik sluit hem in, tik hem aan, en ik ben door. Er is geen wachtwoord dat ik kan vergeten, kwijtraken of ergens hergebruiken.

Het voordeel van passkey-only is ook dat er geen zwakkere optie overblijft. Zodra je wachtwoorden toestaat naast passkeys, is het wachtwoord alsnog de kwetsbare kant. Door wachtwoorden helemaal weg te laten, is die keuze er niet meer. Een nep-loginpagina heeft bovendien niets aan een passkey, omdat de sleutel aan het domein gebonden is. Dat geeft extra zekerheid voor iets waar al mijn andere diensten achter zitten.

Ik was er eerlijk gezegd sceptisch over. Passkeys worden nog niet overal goed ondersteund en de ervaring verschilt per apparaat. Maar voor een loginpagina die ik zelf beheer, werkt het goed genoeg dat ik niet meer terug wil naar een wachtwoord.

Wat je niet moet vergeten

Als Pocket ID niet bereikbaar is, kom je nergens in. In een homelab is dat minder hypothetisch dan het klinkt. Nodes herstarten, CephFS heeft op zijn tijd een moment, en soms heb ik zelf iets gedaan waardoor een VM even plat lag.

Pocket ID draait bij mij op een stabiele VM met weinig andere workloads, maar het blijft iets om rekening mee te houden. Sommige applicaties hebben een lokale fallback naast SSO; andere niet. Dat weet je pas als je er een keer tegenaan loopt.

Niet elke OIDC-integratie is even goed uitgewerkt. Bij de meeste gaat het prima, maar ik ben een paar applicaties tegengekomen met onduidelijke documentatie of een flow die net anders liep dan verwacht. Niet iets van Pocket ID, maar iets om op voorbereid te zijn.

Hoe het er nu uitziet

Een applicatie openen, YubiKey aanraken, doorgaan. Als de sessie bij Pocket ID nog geldig is, is het klaar. Geen apart account per dienst, geen wachtwoord dat ik me moet herinneren.

Achteraf had ik eerder van Authentik af gemoeten. Niet omdat Pocket ID in absolute zin zoveel beter is, maar omdat het gewoon past bij wat ik nodig heb. Minder onderhoud, minder kans dat ik iets breek zonder te begrijpen waarom.