Nederlands
  • postmortem
  • cloud-service
  • incident

Postmortem: onverwachte JWT `iss` wijziging

Incidentrapport voor de onverwachte JWT `iss` wijziging op 2024-03-18.

Sijie
Sijie
Developer

Samenvatting

Op 2024-03-18 veroorzaakte een update in het gedrag van de JWT-uitgever in Logto Cloud problemen met authenticatiestromen voor gebruikers met aangepaste domeinen en iss-validatie. De oplossing vereiste dat deze gebruikers hun validatielogica moesten updaten.

  • Getroffen gebruikers: gebruikers met ingeschakelde aangepaste domeinen die iss-validatie uitvoeren.
  • Ernst: Kritiek, verbreekt iss validatie binnen authenticatiestromen.

Hoofdoorzaak

De update wijzigde het iss-veld om overeen te komen met het aangevraagde domein, waardoor bestaande validaties die de eerdere standaarduitgever verwachtten, niet meer werkten.

Tijdlijn

  • 2024-03-18 10:00 (UTC): updates uitgerold, waardoor het iss-gedrag veranderde.
  • 2024-03-18 23:30 (UTC): eerste gebruikersrapport ontvangen over bestaand gedrag dat verbroken werd.
  • 2024-03-19 12:00 (UTC): het probleem bevestigd en begonnen met onderzoeken.
  • 2024-03-19 14:00 (UTC): de hoofdoorzaak en impact geïdentificeerd.
  • 2024-03-20 20:00 (UTC): e-mail voorbereid voor de getroffen gebruikers.
  • 2024-03-20 06:00 (UTC): e-mails verzonden naar alle getroffen gebruikers.

Impactanalyse

Details van de release

Logto Cloud ondersteunt aangepaste domeinen voor authenticatie, ontwikkelaars met ingeschakelde aangepaste domeinhuurders kunnen het eindpunt instellen op het aangepaste domein in SDK's, waarna de eindgebruiker dit eindpunt zal gebruiken om het authenticatieproces te starten en tokens te verkrijgen. Sommige tokens zijn in de vorm van JWT, die een iss-veld bevatten dat de uitgever van dit token aangeeft. Voorheen zou de uitgever, zelfs wanneer een aangepast domeineindpunt werd gebruikt om een toegangstoken aan te vragen, nog steeds standaard onze standaarddomein ([tenant-id].logto.app) zijn.

Maar het domein van de uitgever zou hetzelfde moeten zijn als het aangevraagde eindpunt. Dus we hebben een update uitgebracht om dit probleem op te lossen, en nu zal het iss-veld automatisch het domein weerspiegelen dat in de aanvraag wordt gebruikt.

Voor degenen die al aangepaste domeinen gebruiken om tokens te verlenen en iss-veldvalidatie in de bronnenserver hebben geïmplementeerd, kan dit een belangrijke wijziging zijn. Bestaande authenticatiecontroles zullen falen vanwege de verandering van de uitgever. Om dit op te lossen, moeten de ontwikkelaars de validatiecode wijzigen en de verwachte uitgever vervangen door de nieuwe met het aangepaste domein.

We hebben de impact op bestaande iss-validaties onvoldoende in overweging genomen, waardoor deze release een ingrijpende verandering werd zonder eerdere kennisgeving.

Oplossing

Getroffen gebruikers per e-mail op de hoogte gebracht en geadviseerd om hun iss-validatie bij te werken om overeen te komen met het aangevraagde domein.

Rollbacks?

De wijziging is een noodzakelijke aanpassing voor het issuer-veld, en sommige gebruikers zijn mogelijk al aangepast aan het nieuwe gedrag. Een rollback zal verwarring en inconsistentie veroorzaken.

Lessen geleerd

  • Codewijzigingen die de kernauthenticatie beïnvloeden, moeten door het team worden goedgekeurd naast de reguliere beoordelingen.
  • Automatische tests moeten meer gevallen dekken, vooral in cloudspecifieke scenario's.

Corrigerende en preventieve maatregelen

  • Integratietests toevoegen: Voeg testcase toe om het scenario in dit incident te dekken.
  • Feature monitoring projecten: Naast Logto Cloud, onze eigen zijprojecten creëren en diep integreren met Logto om potentiële problemen vóór releases te doorgronden.