Case study

ID

Case studies
Thijssen Software
Year
2026
Stack
Laravel · Passport · OAuth2 · OpenID Connect
Bekijk de code op GitHub →
Resultaat Elke app die ik draai logt nu in via één wachtwoordloze identiteit, en een nieuwe app toevoegen is een korte registratie in plaats van een nieuw authenticatiesysteem.

De uitdaging

Ik draai een familie van kleine, zelf gehoste apps: een tracker, facturatie, mail, een agenda, monitoring en nog een aantal. Elke app had een login nodig, en de gebruikelijke oplossingen zijn allemaal slecht. Een apart wachtwoord per app betekent een dozijn dingen om te lekken, te hergebruiken of te vergeten. Een gedeelde wachtwoorddatabase is weer iets extra's om te beveiligen. Ik wilde één identiteit die elke app vertrouwt, zonder wachtwoorden.

Wat ik bouwde

  • Een zelfstandige identity provider op Laravel: een OAuth2- en OpenID Connect-server (authorization code met PKCE) op basis van Laravel Passport, met discovery- en sleutel-endpoints zodat apps tokens zelf kunnen controleren.
  • Alleen wachtwoordloos inloggen. Mensen loggen in met een eenmalige code per e-mail of met een passkey. Er is nergens in de database een wachtwoordkolom.
  • Toegangsbeheer per app: een gebruiker komt alleen binnen bij de apps waarvoor die toegang heeft, en het user-info-endpoint dwingt dat af, zodat het intrekken van toegang overal tegelijk werkt.
  • Een portaal dat de apps toont die iemand mag openen en ze met één klik start, met een scherm om een nieuwe app te registreren, met kleur en redirect-adressen.
  • Back-channel logout, zodat uitloggen in één app de sessies in de andere apps kan beëindigen, met nieuwe pogingen als een app even niet bereikbaar is.
  • Een klein clientpakket dat andere apps installeren voor "Inloggen met Thijssensoftware" in een paar regels, zodat single sign-on aan een nieuwe app toevoegen een klein klusje is in plaats van een nieuw authenticatiesysteem.

Belangrijke keuzes

  • Nooit wachtwoorden. Een eenmalige code en passkeys dekken elk geval dat ik heb, en er is niets om te hacken of te resetten.
  • Ingelogd blijven tot je uitlogt. Een korte sessie die mensen verrast met een uitlog is erger dan een lange, dus de sessie wordt stil hersteld.
  • Vertrouwen op de grens. Elke app controleert zowel het token als de toegangslijst per app, dus een geldige login alleen is niet genoeg om binnen te komen.
Interesse in dit soort werk?

Laten we praten over jouw project.

Start een vergelijkbaar project →