FACTUAL ACTIVITY RECORD · 実際の作業をもとにした活動記録
期限切れAuth sessionの復元を修正する
Startup refresh、single-flight retry、失効時のKeychain削除を一つのlifecycleへ揃える
目的
Control CenterはKeychainに保存済みsessionがあると、有効期限を確認せず管理画面へ進み、直後のAPI requestが期限切れJWTで拒否されていた。Refreshに成功した場合だけログイン状態を復元する必要があった。
実装
ControlCenterCore/remote control clientにAuth session lifecycleを実装した。起動時は保存sessionをそのまま信用せず、refresh tokenで更新し、administrator metadataを再確認してから新sessionをKeychainへ保存する。Refreshが拒否された場合は古いsessionを削除してlogin画面へ戻す。
API利用中の401はsingle-flight refresh後に1回だけretryし、同時requestが複数のrefreshを発生させない。Logoutはremote tokenがすでに失効していてもlocal Keychain sessionを削除する。認証session lifecycle testに成功、拒否、同時request、logoutの回帰testを追加した。
図を描画しています…
確認したこと
確認結果
Refresh成功前に管理画面へ進まないこと、拒否時に保存sessionを削除することをtestで確認した。
401後のretryが1回に限定され、同時requestでもrefreshが1回だけになることを確認した。
Swift 20件、TypeScript 43件とrepository全体の検証が成功した。実時間経過によるprovider session expiryはcutoff内で観測していない。
完了とした根拠
Startup、API 401、同時request、logoutを一つのAuth lifecycleで扱い、期限切れsessionを無条件復元しないことをtestで固定して完了とした。