コンテンツにスキップ

オフライン検証

キオスクアプリはネットワークが利用できない場合でも、ローカル署名検証によって入場を承認できます。

ネットワークが利用できない場合、以下の手順でローカル検証を実施します:

  1. JWS署名検証:起動時・日次でキャッシュした公開鍵(JWKS kid=qr-1)を使ってQRの署名を検証します
  2. 有効期限チェック:QRペイロードの exp クレームを確認します
  3. ローカル償却済みリスト照合:同一端末での二重スキャンを防止します
  4. オフライン承認として記録:検証成功の場合、{qr, scanned_at, device_note} を端末ローカルのオフライン償却キューに保存します

結果画面にはライム色の「オフライン承認」バッジが表示されます。

端末がオンラインに復帰すると、キューに溜まった償却データを順次 /v1/validate に送信します。

  • サーバー応答が already_redeemed(他端末と競合)の場合:同期ログに 矛盾 として記録し、設定画面のバッジで通知されます
  • 手動同期:設定画面の「今すぐ同期」ボタンを押すことで即時実行できます

:::caution 複数端末が同時オフラインの場合、二重入場は防げません オフライン中の複数端末は、それぞれが独立して同一パスを「有効」と判定することがあります。 これは仕様として許容されたトレードオフです。 :::

  • ゲートごとに端末を分離:入場ゲートを物理的に分け、各ゲートに独立した端末を配置します。1つのゲートから1つのパスしか通過できない運用にすることで、二重入場リスクを実質ゼロにできます
  • オフライン時の事前対策:オフライン時は「オフライン動作中」である旨をスタッフに周知し、疑わしいケースは手動確認を行います
  • 同期後の矛盾確認:オンライン復帰後、設定画面の同期ログで矛盾が記録されていないか確認します

オフライン検証に使用する公開鍵は以下のタイミングで更新されます:

  • アプリ起動時
  • 日次(バックグラウンド)
  • 設定画面の手動更新ボタン

JWKSが取得できない状態が長期間続いた場合、セキュリティのためオフライン承認を拒否することがあります(最終取得から72時間以上経過時)。