オフライン検証
キオスクアプリはネットワークが利用できない場合でも、ローカル署名検証によって入場を承認できます。
オフライン検証の仕組み
Section titled “オフライン検証の仕組み”ネットワークが利用できない場合、以下の手順でローカル検証を実施します:
- JWS署名検証:起動時・日次でキャッシュした公開鍵(JWKS
kid=qr-1)を使ってQRの署名を検証します - 有効期限チェック:QRペイロードの
expクレームを確認します - ローカル償却済みリスト照合:同一端末での二重スキャンを防止します
- オフライン承認として記録:検証成功の場合、
{qr, scanned_at, device_note}を端末ローカルのオフライン償却キューに保存します
結果画面にはライム色の「オフライン承認」バッジが表示されます。
オフライン償却キューの同期
Section titled “オフライン償却キューの同期”端末がオンラインに復帰すると、キューに溜まった償却データを順次 /v1/validate に送信します。
- サーバー応答が
already_redeemed(他端末と競合)の場合:同期ログに 矛盾 として記録し、設定画面のバッジで通知されます - 手動同期:設定画面の「今すぐ同期」ボタンを押すことで即時実行できます
既知の制限:二重入場リスク
Section titled “既知の制限:二重入場リスク”:::caution 複数端末が同時オフラインの場合、二重入場は防げません オフライン中の複数端末は、それぞれが独立して同一パスを「有効」と判定することがあります。 これは仕様として許容されたトレードオフです。 :::
推奨する運用方法
Section titled “推奨する運用方法”- ゲートごとに端末を分離:入場ゲートを物理的に分け、各ゲートに独立した端末を配置します。1つのゲートから1つのパスしか通過できない運用にすることで、二重入場リスクを実質ゼロにできます
- オフライン時の事前対策:オフライン時は「オフライン動作中」である旨をスタッフに周知し、疑わしいケースは手動確認を行います
- 同期後の矛盾確認:オンライン復帰後、設定画面の同期ログで矛盾が記録されていないか確認します
JWKSの更新
Section titled “JWKSの更新”オフライン検証に使用する公開鍵は以下のタイミングで更新されます:
- アプリ起動時
- 日次(バックグラウンド)
- 設定画面の手動更新ボタン
JWKSが取得できない状態が長期間続いた場合、セキュリティのためオフライン承認を拒否することがあります(最終取得から72時間以上経過時)。