概要
CIBA の承認端末を、Web ブラウザ(PWA)の Web Push で代替できるようにしたい。
現在の認証デバイス(authentication_device、Flutter)は、実機で確かめるのに
Android / iOS のビルド環境と署名・配布の手当てが要る。確認したいのは CIBA の承認フローだけで、
そのためにネイティブの開発環境を用意するのは重い。
現状
下地は既にある。 測った結果は次のとおり。
| 箇所 |
状態 |
lib/configs/app_fcm.dart:19 |
vapidKey = '<YOUR_PUBLIC_VAPID_KEY_HERE>'(プレースホルダ) |
lib/components/appauth_page.dart:93 |
getToken(vapidKey: AppFcm.vapidKey) = Web Push 用の呼び出し形(VAPID は Android / iOS では無視される) |
web/ |
index.html / manifest.json / アイコン 192・512 が存在(Flutter の web ターゲット) |
README.md |
web / VAPID への言及は無い |
サーバ側は無改造で済む見込み。 CommonLibrary/Notifications/FcmService.cs:103-125 は
Notification + Data + Token だけを設定し、Webpush / Android / Apns はコメントのまま。
FCM は Web の登録トークンも同じ Token で配信するため、
/SetDeviceToken(device_token)と /ciba_result(auth_req_id)の口も現状のまま使える。
E2E テスト側は、既にプッシュを送信箱(FcmOutboxDirectory)のファイルで代替している(#196)。
本件はテストの代替ではなく、人が実機相当で触る手段を増やすもの。
対応
firebase_messaging の web 初期化と Service Worker(web/firebase-messaging-sw.js)を追加する
- VAPID 公開鍵を設定で渡せるようにする(現在はソース内のプレースホルダ)
web/manifest.json を PWA として成立する内容にする
- HTTPS で配信する手順を
README.md に書く(Web Push は localhost 以外で HTTPS が必須)
- 既存の Android / iOS 経路は壊さない(同じ
lib/ を共有し、web を足すだけ)
制約を明記しておく。
- iOS の Web Push は、PWA をホーム画面に追加した場合のみ(Safari 16.4 以降)。
「ネイティブ不要」が全プラットフォームで成り立つわけではない
/ciba_result は、承認が当該ユーザ宛ての要求かの確認が入っていない。
承認端末を増やす前に、そちらの手当てが別途必要(別途報告済み)
検証
flutter build web が通ること
- ブラウザで登録トークンが取れ、
/SetDeviceToken に登録できること
- CIBA 要求でプッシュが届き、Allow / Deny が
/ciba_result に届いて、
クライアントがトークンを取得(または access_denied)できること
- 既存の E2E(
EX-8 / RT-196)が通ること。送信箱による代替は変えない
利用者への影響
無し。 認証デバイスはサンプル / テスト用で、製品の動作は変わらない。
サーバ側に変更が入らない見込みのため、既存のネイティブ アプリもそのまま動く。
概要
CIBA の承認端末を、Web ブラウザ(PWA)の Web Push で代替できるようにしたい。
現在の認証デバイス(
authentication_device、Flutter)は、実機で確かめるのにAndroid / iOS のビルド環境と署名・配布の手当てが要る。確認したいのは CIBA の承認フローだけで、
そのためにネイティブの開発環境を用意するのは重い。
現状
下地は既にある。 測った結果は次のとおり。
lib/configs/app_fcm.dart:19vapidKey = '<YOUR_PUBLIC_VAPID_KEY_HERE>'(プレースホルダ)lib/components/appauth_page.dart:93getToken(vapidKey: AppFcm.vapidKey)= Web Push 用の呼び出し形(VAPID は Android / iOS では無視される)web/index.html/manifest.json/ アイコン 192・512 が存在(Flutter の web ターゲット)README.mdサーバ側は無改造で済む見込み。
CommonLibrary/Notifications/FcmService.cs:103-125はNotification+Data+Tokenだけを設定し、Webpush/Android/Apnsはコメントのまま。FCM は Web の登録トークンも同じ
Tokenで配信するため、/SetDeviceToken(device_token)と/ciba_result(auth_req_id)の口も現状のまま使える。E2E テスト側は、既にプッシュを送信箱(
FcmOutboxDirectory)のファイルで代替している(#196)。本件はテストの代替ではなく、人が実機相当で触る手段を増やすもの。
対応
firebase_messagingの web 初期化と Service Worker(web/firebase-messaging-sw.js)を追加するweb/manifest.jsonを PWA として成立する内容にするREADME.mdに書く(Web Push は localhost 以外で HTTPS が必須)lib/を共有し、web を足すだけ)制約を明記しておく。
「ネイティブ不要」が全プラットフォームで成り立つわけではない
/ciba_resultは、承認が当該ユーザ宛ての要求かの確認が入っていない。承認端末を増やす前に、そちらの手当てが別途必要(別途報告済み)
検証
flutter build webが通ること/SetDeviceTokenに登録できること/ciba_resultに届いて、クライアントがトークンを取得(または
access_denied)できることEX-8/RT-196)が通ること。送信箱による代替は変えない利用者への影響
無し。 認証デバイスはサンプル / テスト用で、製品の動作は変わらない。
サーバ側に変更が入らない見込みのため、既存のネイティブ アプリもそのまま動く。