2023-05-11

Firefox Androidにおけるresident key (Discoverable Credentials) 対応

これの続き

Firefox AndroidにおいてはWebAuthnの実装をGoogleのFIDO2ライブラリを使っている。このライブラリはWebAuthn APIをそのままJavaのインターフェイスにしたようなものなので、Firefox AndroidにおけるWebAuthnの対応はこのライブラリの実装内容に依存している。

今年になってこのライブラリがアップデートされ、resident key (Discoverable Credentials) 対応が含まれた。ただ残念?なことにそのAPIを使うと、CredentialsがGoogle Password Managerで他のデバイスとGoogleアカウントを通じて同期するようになる。要は勝手にPasskey対応になってしまう。もちろん同期しないオプションなんてアプリケーション側が使えるAPIには存在しない。なお、デバイスがGoogleアカウントにサインインしてない場合、Passkeyが作成できないというエラーでWebAuthn APIは失敗する。

このような状況なので、いくつか懸念点はあるんだが、Firefox AndroidのStable版はabout:configを使えるわけではないので、デフォルトオフで実装は入れておいた。Firefox 114のBetaおよびNightlyでabout:configで該当設定を変更すれば使えるようになる。

PasskeysがGoogleアカウント経由で同期されるということは、例えば、ChromeでPasskeyを使ってサインインした場合、そこで利用されたCredentialがFirefoxでも使えてしまう (もちろん逆も同じ)。そのような感じでいろいろどうかと思う動作がいろいろあるので、Bug 1831137に解決しないといけない問題は書いてある。個人的にはAndroid 14以上の場合だけ使えるようにしてもいいかもだけど、まだ最終的な結論は決めてない。なぜAndroid 14以降なのかというと、このバージョンではCredential Provier Serviceというものが導入される予定で、Autofill Serviceのようにシステム側で使うように設定しておけば、Google Passowrd Managerではなく、設定したサードパーティのサービスが使える予定らしい。Android 14が出てから考えよう

2023-04-22

MacBook Air (2020) M1のUSB-Cポートが壊れたのでApple Storeで交換 (修理) した

最近、ビデオ会議のときはMacBook Airを使っている。理由は自宅で使っているDebian/sidな環境でスピーカーフォンが使えたり使えなかったりと不安定だからなのだが (これはpipewireに変わってから頻発してるので、どうにか原因は突き止めたいと思っている)、ミーティングの時間にMacBook Airを使おうとしたら、電源が入らなくなっている。USB-Cポートが一つ壊れていたのだが、こっちのポートも壊れたか、マザーボード自体壊れたっぽい。新しいものを買うという選択肢もあるのだけど、すぐ直ったらラッキーなので、Apple Storeに修理の予約を入れた。

Apple Storeで現象の説明 (電源が入らない) を説明した後、USB-Cポートも一つ壊れているので、両方壊れているのかもしれないという話をしたところ、一回中身見ますね、ってことで自分のMacBook Airをバックヤードに持っていって、分解して調査をしてもらった。

その後、すぐ戻ってきて、

  • 壊れたUSB-Cポートは、どうもゴムらしきものが挟まっていて、それが原因っぽい
  • 今まで使えてたUSB-Cポートは洗浄してみてどうなるかを調べる

という話になり、作業した後にチェックすると、今まで使えてたUSB-Cポートはちゃんと動作する (= 充電が開始され、電源が入る) ようになり、もう一つの前から壊れてたポートは、動かなかったり動いたりと不安定な状態だった。「このままでもいいですけど、ボード交換という修理も可能です。交換の場合は15000円強になります」という説明を受けて、それだったら修理にするということで修理に出した。値段の大部分は作業料で、実際のボード部分は2000円らしい

修理に出したのが夕方で翌日の夕方には修理完了ということで、Apple Storeでピックアップ可能になってた。一日でピックアップできるのは非常に満足だった。昔東芝が秋葉原のサービスセンター持ってた時に、運が良くてすぐピックアップ可能だったのだけど、販売元が修理の際にちゃんと説明してくれるのは非常に満足度高いよねと

2023-03-24

How to build Firefox for Linux/riscv64 on Ubuntu 22.10 + Unmatched

A people asks me about how to build Firefox/riscv64. Since all patches to build it are merged, so the instruction is updated from previous. The following instruction is on Ubuntu 22.10 on riscv64gc

  1. Clone firefox code from mozilla official repository
    • hg clone https://hg.mozilla.org/mozilla-central (Mercurial)
    • git clone https://github.com/mozilla/gecko-dev (git).
  2. Change current directory to cloned directory
    • cd mozilla-central (if using mercurial)
    • cd gecko-dev (if using git)
  3. Create mozconfig file in current dicrectory. File content is the following
    mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir
    mk_add_options AUTOCLOBBER=1
    
    ac_add_options --enable-application=browser
    ac_add_options --disable-debug
    ac_add_options --enable-optimize
    ac_add_options --disable-tests
    ac_add_options --without-wasm-sandboxed-libraries
  4. Install rust. See rustup.rs
  5. Install clang and nodejs
    • sudo apt install clang nodejs
  6. Run ./mach bootstrap and select "2. Firefox for Desktop"
  7. Run ./mach configure
  8. Run ./mach build. It spends 8-9 hours.

Enjoy!

2023-03-22

Google Mobile ServiceのFIDOパッケージを使うと勝手にPasskey対応になる

Google Mobile Service (GMS) にFIDOのパッケージがあるんだが、今年リリースされたVersion 19でWebAuthnにおけるDiscoverable Credentials (Resident key)の対応ができるAPIが追加されている。

Blinkを使っていないとあるWeb BrowserのAndroid版におけるWebAuthn対応はこのGMSのパッケージを使っているおかげで、Resident keyの対応をしていなかったのだが、このパッケージのバージョンにアップデートすれば解決するかも?と考えて、手元で修正コードを書いてみたんだけど、以下のように表示されて勝手にPasskey対応になるっぽい。

上記のように勝手にPasskey対応になってしまい、しかもGoogleアカウント内に同期されちゃうから、とあるWeb Browserの事情だと実装するには、いろんな人たちの許可取らないといけないので、Resident key対応は一時中断することにした。個人的にはPasskeyを使うかどうかのオプションが欲しいのだけどないっぽいし、あの検索会社自体の都合でそれをつけてくれるのはないだろうな、しかもこのパッケージ、GMSだし。

2023-03-16

Pixel 6aの画面が割れたのでiCrackedで修理した

仕事でスマホOSの開発、デバイスリリースもやったし、今もスマホOS向けのWebブラウザ作ってる仕事をしてるわけだが、なんでもスマホに取り込むということはなおさら信用できない。今回旅先でPixel 6aを落として画面を割ったときも、ガラス面が割れるだけだと良かったのだけど、パネルごと割れてしまって、画面が映らなくなった。そんな状態になったら、画面を確認することはできないわけだから、飛行機のチケットとか (QRコード)、電子マネーのチャージとかもできないわけで。そもそも落とす自分が悪いわけだけど、スマホにすべて取り込むというのは正直ないなと改めて思う。

そんな話はさておき、自分が所有しているアメリカン・エクスプレスではスマホの盗難・故障に対する保証制度 (スマートフォン・プロテクション) というものがあり、修理金額の一部を補填してくれるので、それを行った。そのときのお話。

まず、この保証制度を申し込むためには、以下のものが必要になる

  • そのスマートフォンを買った際の領収書。Pixelの場合はGoogleから買った際に送られてくるメールで問題なし
  • 故障を証明する写真。今回は画面が割れている本体の画像
  • 修理内容、代金を証明する書類。今回の場合はiCrackedで修理を行ったので、その作業が書かれた書類。修理されたときに渡される

今回の修理はiCrackedで行った。ここはGoogleの正規サービスプロバイダなので、ここで修理しても本体保証は変わらないらしい。店舗自体が都内にはいくつもあるのでネットで申し込んで空いていれば当日に修理を行ってもらえる。修理時間も1時間もかからないので、郵送よりも実店舗に直接行くのが便利だと思う。

なお、AMEXのスマートフォン・プロテクション、申込みから実質2営業日くらいでお金が振り込まれるので、非常に便利でした。でもGoogleはUSでやっているPreferred Careを日本で展開できないのはなんでだろう。売れてないんだろうな