"iat" トークンクレームの重要性と"Invalid issued at time"エラーのトラブルシューティングの理解
この投稿では、ID トークンの"iat"クレームの重要性と"Invalid issued at time in ID token"エラーをトラブルシュートする方法を探ります。
この投稿では、ID トークンの"iat"クレームの重要性と"Invalid issued at time in ID token"エラーをトラブルシュートする方法を探ります。
コミュニティでは、時折、"ID トークンの無効な発行時刻"という頭を悩ます問題についてユーザーから聞くことがあります。ユーザーは「昨日は動作していたのに、突然今日動かなくなった」や「このコンピューターでは動作するが、他のコンピューターでは動かない」と不満を漏らします。
この投稿では、Logto でこの問題がなぜ発生するのかを探り、それに対応するためのノウハウを提供します。
OAuth 2.0 と OpenID Connect (OIDC) では、ID トークンが、安全にユーザーの身元情報を当事者間で伝達する上で重要な役割を果たします。ID トークンのクレームのひとつに "iat" (issued-at-time) と呼ばれるものがあります。これは、ID トークンが認可サーバーによって発行されたタイムスタンプを表しています。
さて、悪名高い "Invalid issued at time" エラーの根本原因は、ほぼ明らかです。
リプレイ攻撃を軽減し、クロックスキューを考慮するために、Logto は以前、ID トークンに60秒の許容ウィンドウを設定していました。世界時刻との差が60秒を超える依拠しているパーティは、潜在的にリスクがあると見なされ、ID トークンの検証に失敗します。したがって、"Invalid token at time" エラーです。
しかし、実際の世界では、クロックスキューは発生します。時にはコンピューターが世界時刻サーバーに接続してコンピューターの時間を同期できなくなります。時には、認可サーバーが同期していないこともあります。さらに言えば、両方が同期していない場合もあります。
さらに、SSO シナリオでは、さまざまなクライアントと SSO プロバイダー間の時刻の違いがさらに大きくなる可能性があります。
痛みを軽減し、安全対策を考慮するために、Logto は iat の許容を非 SSO 認証では60秒から5分に、SSO シナリオでは10分に増加させました。
その間にも、https://time.is という便利なツールサイトを使用して、コンピューターの時刻が世界と同期しているかどうかを確認できます。手動で時刻を同期または別の時刻サーバーに変更し、時差が常に許容ウィンドウ内に収まるようにします。
ID トークンの "iat" クレームは、現代のアプリケーションにおけるアイデンティティとアクセス管理のセキュリティを高めるための重要な要素です。"iat" クレームを扱う際にベストプラクティスを取り入れることで、堅牢で安全なアイデンティティ認証プロセスを保証します。
また、コンピューターの時刻が常に世界時刻サーバーと同期していることを確認してください。