Verstehen der Bedeutung des "iat" Token-Anspruchs und Behebung des Fehlers "Invalid issued at time"
In diesem Beitrag werden wir die Bedeutung des "iat" Anspruchs im ID-Token untersuchen und wie man den Fehler "Invalid issued at time in ID token" behebt.
Verstehen der Bedeutung des „iat“ Token-Anspruchs und Behebung des Fehlers „Invalid issued at time“
Hintergrund
In unserer Community hören wir hin und wieder von unseren Nutzern über das verwirrende Problem „Invalid issued at time in the ID token“. Unsere Nutzer beschweren sich: „Es hat gestern noch funktioniert, aber heute plötzlich nicht mehr“ oder „Es funktioniert auf diesem Computer, aber nicht auf einem anderen“.
In diesem Beitrag erforschen wir, warum dieses Problem in Logto auftritt, und geben dir das Wissen, um es zu lösen.
Einführung
In OAuth 2.0 und OpenID Connect (OIDC) spielen ID-Tokens eine wesentliche Rolle bei der sicheren Übermittlung von Benutzeridentitätsinformationen zwischen Parteien. Einer der Ansprüche in einem ID-Token wird "iat" (issued-at-time) genannt und steht für den Zeitpunkt, zu dem das ID-Token vom Autorisierungsserver ausgestellt wurde.
Warum ist der „iat“ Anspruch wichtig?
- Token-Frische und Ablauf: Der "iat" Anspruch liefert eine entscheidende Information zur Bewertung der Frische eines ID-Tokens. Durch den Vergleich des "iat" Zeitstempels mit der aktuellen Zeit können die Empfängerparteien bestimmen, wie kürzlich das Token ausgestellt wurde. Diese Information ist für Anwendungen wertvoll, die die Verwendung aktueller Identitätsinformationen sicherstellen müssen.
- Minderung von Replay-Angriffen: Der "iat" Anspruch spielt eine wichtige Rolle bei der Minderung von Replay-Angriffen. Bei einem Replay-Angriff versucht ein Angreifer, ein zuvor abgefangenes Token erneut zu verwenden. Der "iat" Anspruch hilft dabei, solche Angriffe zu erkennen, indem er der Empfängerpartei erlaubt, ein Toleranzfenster für das Alter des Tokens festzulegen. Tokens außerhalb dieses Fensters können als ungültig betrachtet werden.
- Durchsetzung von Token-Nutzungsrichtlinien: Anwendungen setzen oft Richtlinien für das maximal zulässige Alter eines ID-Tokens aus Sicherheitsgründen durch. Der "iat" Anspruch ermöglicht es den Empfängerparteien, diese Richtlinien durchzusetzen, indem sichergestellt wird, dass Tokens innerhalb eines bestimmten Zeitrahmens verwendet werden. Dies hilft, das mit der Verwendung von veralteten Tokens verbundene Risiko zu minimieren.
- Unterstützung von Token-Widerruf: In einigen Szenarien könnte ein Autorisierungsserver ausgestellte Tokens widerrufen müssen. Der "iat" Anspruch ist bei Token-Widerrufsprozessen wichtig, da er einen klaren Zeitstempel für die Ausstellung des Tokens liefert. Er vereinfacht die Identifizierung und den Widerruf bestimmter Tokens basierend auf deren Ausstellungszeit.
Beste Praktiken für den Umgang mit dem „iat“ Anspruch
- Validiere den "iat" Anspruch: Die Empfängerparteien sollten immer den "iat" Anspruch validieren, um sicherzustellen, dass er innerhalb eines akzeptablen Bereichs liegt. Dieser Bereich kann je nach den spezifischen Sicherheitsanforderungen der Anwendung variieren.
- Berücksichtige Zeitabweichungen: Erlaube einen gewissen Grad an Zeitabweichungen beim Vergleich des "iat" Zeitstempels mit der aktuellen Zeit. Zeitabweichungen beziehen sich auf eventuelle Zeitunterschiede zwischen dem Autorisierungsserver und der Empfängerpartei.
- Setze Token-Ablauf-Richtlinien: Nutze den "iat" Anspruch zusammen mit dem "exp" (Ablaufzeit) Anspruch, um umfassende Token-Nutzungsrichtlinien durchzusetzen, was die allgemeine Sicherheitshaltung der Anwendung verbessert.
Fehlerbehebung
Jetzt ist die Hauptursache des berüchtigten „Invalid issued at time“ Fehlers fast klar.
Um Replay-Angriffe zu mindern und auch die Zeitabweichung zu berücksichtigen, hat Logto zuvor ein Toleranzfenster von 60 Sekunden für die ID-Tokens festgelegt. Jede Empfängerpartei, die eine Zeitdifferenz von mehr als 60 Sekunden zur Weltzeit hat, wird als potenziell gefährdet betrachtet und die ID-Token-Validierung schlägt fehl. Daher der Fehler „Invalid token at time“.
In der realen Welt passieren jedoch Zeitabweichungen, manchmal kann dein Computer keine Verbindung zum Weltzeitserver herstellen, um die Computerzeit zu synchronisieren. Manchmal ist der Autorisierungsserver nicht synchron. Manchmal, noch schlimmer, sind beide nicht synchron.
Zusätzlich können in SSO-Szenarien die Zeitunterschiede zwischen verschiedenen Clients und dem SSO-Anbieter noch größer sein.
Lösung
Um die Problematik zu mildern und gleichzeitig Sicherheitsmaßnahmen zu berücksichtigen, hat Logto jetzt die iat-Toleranz von 60 Sekunden auf 5 Minuten für Nicht-SSO-Authentifizierungen und 10 Minuten für SSO-Szenarien erhöht.
Gleichzeitig kannst du überprüfen, ob deine Computerzeit mit der Weltzeit synchronisiert ist, indem du einfach dieses praktische Tool-Website verwendest: https://time.is Synchronisiere deine Zeit manuell oder wechsle zu einem anderen Zeitserver, um sicherzustellen, dass die Zeitdifferenz immer innerhalb unseres Toleranzfensters liegt.
Fazit
Der "iat" Anspruch in ID-Tokens ist ein entscheidendes Element zur Verbesserung der Sicherheit der Identitäts- und Zugangsverwaltung in modernen Anwendungen. Die Einbindung von Best Practices für den Umgang mit dem "iat" Anspruch gewährleistet einen robusten und sicheren Identitätsauthentifizierungsprozess.
Stelle außerdem sicher, dass deine Computerzeit immer mit dem Weltzeitserver synchronisiert ist.