Förstå vikten av "iat"-token påståendet och felsökning av felet "Ogiltig utfärdande tid"
I detta inlägg kommer vi att utforska vikten av "iat"-påståendet i ID-token och hur man felsöker felet "Ogiltig utfärdande tid i ID-token".
Förstå vikten av "iat"-token påståendet och felsökning av felet "Ogiltig utfärdande tid"
Bakgrund
I vår community hör vi då och då från våra användare om det här huvudbryande problemet med "Ogiltig utfärdande tid i ID-token". Våra användare klagar på att "Det fungerade igår men plötsligt fungerar det inte idag" eller "Det fungerar på den här datorn, men inte på den andra".
I detta inlägg kommer vi att utforska varför detta problem uppstår i Logto och ge dig den kunskap du behöver för att hantera det.
Introduktion
I OAuth 2.0 och OpenID Connect (OIDC) spelar ID-token en viktig roll för att säkert överföra användaridentitetsinformation mellan parter. En av påståendena i en ID-token kallas "iat" (utfärdande tid), vilket representerar tidsstämpeln när ID-token utfärdades av auktorisationsservern.
Så varför är "iat"-påståendet viktigt?
- Tokenens färskhet och utgång: "Iat"-påståendet ger en viktig information för att bedöma färskheten hos en ID-token. Genom att jämföra "iat"-tidsstämpeln med aktuell tid kan förlitande parter avgöra hur nyligen tokenen utfärdades. Denna information är värdefull för applikationer som behöver säkerställa användningen av uppdaterad identitetsinformation.
- Minska upprepningsattacker: "Iat"-påståendet spelar en viktig roll i att minska upprepningsattacker. I en upprepningsattack försöker en angripare återanvända en tidigare avlyssnad token. "Iat"-påståendet hjälper till att upptäcka sådana attacker genom att låta den förlitande parten ställa in ett toleransfönster för tokenens ålder. Tokens utanför detta fönster kan anses ogiltiga.
- Genomdriva tokenanvändningspolicyer: Applikationer inför ofta policyer för den maximalt tillåtna åldern för en ID-token av säkerhetsskäl. "Iat"-påståendet gör det möjligt för förlitande parter att genomdriva dessa policyer, vilket säkerställer att tokens används inom en specificerad tidsram. Detta hjälper till att minimera risken med användningen av inaktuella tokens.
- Stödja tokenåterkallning: I vissa scenarier kan en auktorisationsserver behöva återkalla utfärdade tokens. "Iat"-påståendet är avgörande i återkallningsprocesser genom att ge en tydlig tidsstämpel för när tokenen utfärdades. Det förenklar identifieringen och återkallningen av specifika tokens baserat på deras utfärdandetid.
Bästa praxis för att hantera "iat"-påståendet
- Validera "iat"-påståendet: Förlitande parter bör alltid validera "iat"-påståendet för att säkerställa att det ligger inom ett acceptabelt intervall. Detta intervall kan variera beroende på de specifika säkerhetskraven för applikationen.
- Beakta klockförskjutning: Tillåt en viss grad av klockförskjutning när du jämför "iat"-tidsstämpeln med aktuell tid. Klockförskjutning tar hänsyn till eventuella potentiella tidsdifferenser mellan auktorisationsservern och den förlitande parten.
- Sätt token utgångspolicyer: Utnyttja "iat"-påståendet tillsammans med "exp" (utgångstid) påståendet för att genomdriva omfattande tokenanvändningspolicyer, vilket förbättrar applikationens säkerhetshållning.
Felsökning
Nu är den underliggande orsaken till det beryktade felet "Ogiltig utfärdande tid" nästan klar.
För att minska upprepningsattacker och också beakta klockförskjutningen, satte Logto tidigare ett toleransfönster på 60 sekunder för ID-tokens. Varje förlitande part som har tidsdifferensen mer än 60 sekunder från världstiden anses potentiellt vara i riskzonen och kommer att misslyckas med ID-tokenvalideringen. Därmed felet "Ogiltig token vid tid".
Men i verkligheten inträffar klockförskjutning, ibland misslyckas din dator med att ansluta till världstidsservern för att synkronisera datortiden. Ibland är auktorisationsservern i osynk. Ibland, ännu värre, är båda i osynk.
Dessutom, i SSO-scenarier, kan tidsdifferenserna mellan olika klienter och SSO-leverantören vara ännu större.
Lösning
För att lindra smärtan och också beakta säkerhetsåtgärder, har Logto nu ökat iat-toleransen från 60 sekunder till 5 minuter för icke-SSO autentiseringar, och 10 minuter för SSO-scenarier.
Under tiden kan du kontrollera om din datortid är synkroniserad med världen genom att helt enkelt använda denna praktiska verktygssida: https://time.is Synkronisera din tid manuellt eller byt till en annan tidsserver, för att säkerställa att tidsdifferensen alltid ligger inom vårt toleransfönster.
Slutsats
"Iat"-påståendet i ID-tokens är ett avgörande element för att förbättra säkerheten för identitet och åtkomsthantering i moderna applikationer. Att införliva bästa praxis för att hantera "iat"-påståendet säkerställer en robust och säker identitets autentifieringsprocess.
Se också till att din datortid alltid är synkroniserad med världstidsservern.