• iat
  • issued at time
  • invalid-iat
  • invalid issued at time
  • id token

Zrozumienie znaczenia roszczenia tokena "iat" i rozwiązywanie błędu "Invalid issued at time"

W tym wpisie zbadamy znaczenie roszczenia "iat" w tokenie identyfikacyjnym i jak rozwiązać błąd "Invalid issued at time in ID token".

Charles
Charles
Developer

Zrozumienie znaczenia roszczenia tokena „iat” i rozwiązywanie błędu „Invalid issued at time”

Tło

W naszej społeczności co jakiś czas słyszymy od naszych użytkowników o tym trudnym do zrozumienia problemie „Invalid issued at time in the ID token”. Nasi użytkownicy narzekają, że „Wczoraj działało, ale nagle dziś nie działa” lub „Działa na tym komputerze, ale nie na innym”.

W tym poście zbadamy, dlaczego ten problem występuje w Logto, i wyposażymy Cię w wiedzę, jak go rozwiązać.

Wstęp

W OAuth 2.0 i OpenID Connect (OIDC), tokeny identyfikacyjne odgrywają kluczową rolę w bezpiecznym przesyłaniu informacji o tożsamości użytkownika między stronami. Jednym z roszczeń w tokenie identyfikacyjnym jest "iat" (czas wydania), reprezentujący znacznik czasu, w którym token identyfikacyjny został wydany przez serwer autoryzacji.

Dlaczego roszczenie „iat” jest ważne?

  1. Świeżość tokena i wygaśnięcie: Roszczenie "iat" dostarcza kluczowej informacji do oceny świeżości tokena identyfikacyjnego. Porównując znacznik czasu "iat" z aktualnym czasem, strony polegające mogą określić, jak niedawno token został wydany. Ta informacja jest wartościowa dla aplikacji, które muszą zapewnić użycie aktualnych informacji o tożsamości.
  2. Łagodzenie ataków powtórkowych: Roszczenie "iat" odgrywa kluczową rolę w łagodzeniu ataków powtórkowych. W ataku powtórkowym przeciwnik próbuje ponownie użyć wcześniej przechwyconego tokena. Roszczenie "iat" pomaga wykrywać takie ataki, umożliwiając stronie polegającej ustawienie okna tolerancji dla wieku tokena. Tokeny poza tym oknem mogą być uznane za nieważne.
  3. Wymuszenie zasad używania tokenów: Aplikacje często narzucają polityki dotyczące maksymalnego dopuszczalnego wieku tokena identyfikacyjnego ze względów bezpieczeństwa. Roszczenie "iat" umożliwia stronom polegającym egzekwowanie tych polityk, zapewniając, że tokeny są spożywane w określonym przedziale czasowym. To pomaga zminimalizować ryzyko związane z używaniem przestarzałych tokenów.
  4. Wsparcie unieważniania tokenów: W niektórych scenariuszach serwer autoryzacji może potrzebować unieważnienia wydanych tokenów. Roszczenie "iat" jest instrumentalne w procesach unieważniania tokenów, dostarczając jasny znacznik czasu, kiedy token został wydany. Ułatwia to identyfikację i unieważnianie określonych tokenów na podstawie czasu ich wydania.

Najlepsze praktyki dotyczące obsługi roszczenia „iat”

  • Sprawdź roszczenie "iat": Strony polegające powinny zawsze sprawdzać roszczenie "iat", aby zapewnić, że mieści się ono w akceptowalnym zakresie. Zakres ten może się różnić w zależności od konkretnych wymagań bezpieczeństwa aplikacji.
  • Uwzględnij przesunięcie zegara: Dopuszczaj pewien stopień przesunięcia czasu przy porównywaniu znacznika czasu "iat" z aktualnym czasem. Przesunięcie zegara uwzględnia potencjalne różnice czasowe między serwerem autoryzacji a stroną polegającą.
  • Ustaw polityki wygasania tokenów: Wykorzystaj roszczenie "iat" w połączeniu z roszczeniem "exp" (czas wygaśnięcia), aby egzekwować kompleksowe polityki używania tokenów, wzmacniając ogólną pozycję bezpieczeństwa aplikacji.

Rozwiązywanie problemów

Teraz przyczyna słynnego błędu „Invalid issued at time” jest niemal jasna.

Aby łagodzić ataki powtórzeniowe i również uwzględniać przesunięcia czasu, Logto wcześniej ustawiło okno tolerancji wynoszące 60 sekund dla tokenów identyfikacyjnych. Każda strona polegająca, która ma różnicę czasu większą niż 60 sekund od czasu światowego, jest uznawana za potencjalnie zagrożoną i nie przejdzie walidacji tokena ID. Stąd błąd „Invalid token at time”.

Jednak w realnym świecie przesunięcia zegara się zdarzają, czasami twój komputer nie może się połączyć z serwerem czasu światowego, aby zsynchronizować czas komputera. Czasami serwer autoryzacji jest rozstrojony. Czasami, co gorsza, oba są rozstrojone.

Ponadto w scenariuszach SSO różnice czasowe między różnymi klientami a dostawcą SSO mogą być jeszcze większe.

Rozwiązanie

Aby złagodzić ten ból, a także uwzględniając środki ostrożności, Logto zwiększyło teraz tolerancję iat z 60 sekund do 5 minut dla uwierzytelnień bez SSO, i 10 minut dla scenariuszy SSO.

W międzyczasie możesz sprawdzić, czy czas na komputerze jest zsynchronizowany z czasem światowym, korzystając po prostu z tej poręcznej strony narzędziowej: https://time.is Zsynchronizuj czas ręcznie lub zmień na inny serwer czasu, aby upewnić się, że różnica czasu mieści się zawsze w naszym oknie tolerancji.

Wniosek

Roszczenie "iat" w tokenach identyfikacyjnych jest kluczowym elementem dla poprawy bezpieczeństwa zarządzania tożsamością i dostępem w nowoczesnych aplikacjach. Włączanie najlepszych praktyk dotyczących obsługi roszczenia "iat" zapewnia solidny i bezpieczny proces uwierzytelniania tożsamości.

Upewnij się także, że twój czas na komputerze jest zawsze zsynchronizowany z serwerem czasu światowego.