こんにちは、富士榮です。
OpenID Providerをパスキー対応にするためにパスキーの実装をしているわけですが、登録時のnavigator.credentials.createのAPIのレスポンスを各種認証器で確認してみました。
写真)どんどん増えていく認証器たち
色々と解せない点(黄色で色付けしたセル)も出てきているのですが、実際にパスキーの実装をする際は色々なデバイス・ブラウザ・認証器の組み合わせで試験をしないといけないのでこういうチェックはしないといけないと思います。
利用 デバイス | ブラウザ | 認証器 | ユーザ認証 | レスポンス |
Transport | UP | UV | BE | BS | AT | ED |
Mac | Safari | 内蔵Touch ID | 指紋 | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Yubikey USB-C/NFC | PIN | nfc, usb | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-C/Lightning | PIN | usb | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-A/NFC (PIN未設定) | - | userVerificationをrequiredにしているのにPIN設定が求められず、登録できてしまう。ただしUVは0となる |
eWBM GoldenGate USB-C | PIN | usb | 1 | 1 | 0 | 0 | 1 | 0 |
iPhone | FaceID | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Android | 指紋 | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Chrome | 内蔵Touch ID | 指紋 | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Yubikey USB-C/NFC | PIN | nfc, usb | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-C/Lightning | PIN | usb | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-A/NFC (PIN未設定) | - | userVerificationをdiscouragedにしてもPIN設定が求められる |
eWBM GoldenGate USB-C | PIN | operation not allowed |
iPhone | FaceID | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Android | 指紋 | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Firefox | 内蔵Touch ID | 指紋 | internal | 1 | 1 | 1 | 1 | 1 | 0 |
Yubikey USB-C/NFC | PIN | null | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-C/Lightning | PIN | null | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-A/NFC (PIN未設定) | - | userVerificationをrequiredにしているのにPIN設定が求められず、登録できてしまう。ただしUVは0となる |
eWBM GoldenGate USB-C | PIN | null | 1 | 1 | 0 | 0 | 1 | 0 |
iPhone | FaceID | internal | 1 | 1 | 1 | 1 | 1 | 0 |
Android | 指紋 | internal | 1 | 1 | 1 | 1 | 1 | 0 |
iPhone | Safari | FaceID | FaceID | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Yubikey USB-C/NFC | PIN | nfc, usb | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-A/NFC (PIN未設定) | - | userVerificationをrequiredにしているのにPIN設定が求められず、登録できてしまう。ただしUVは0となる |
Authntrend AT-Key/NFC | 指紋 | nfc | 1 | 1 | 0 | 0 | 1 | 0 |
Android | 指紋 | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Chrome | FaceID | FaceID | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Yubikey USB-C/NFC | PIN | nfc, usb | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-A/NFC (PIN未設定) | - | userVerificationをrequiredにしているのにPIN設定が求められず、登録できてしまう。ただしUVは0となる |
Authntrend AT-Key/NFC | 指紋 | nfc | 1 | 1 | 0 | 0 | 1 | 0 |
Android | 指紋 | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Android | Chrome | OSアンロック | 指紋 | Internal, hybrid | 1 | 1 | 1 | 1 | 1 | 0 |
Yubikey USB-C/NFC | PIN | ble, hybrid, internal, nfc, usb | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-C/Lightning | PIN | ble, hybrid, internal, nfc, usb | 1 | 1 | 0 | 0 | 1 | 0 |
Yubikey USB-A/NFC (PIN未設定) | - | userVerificationをrequiredにするとPINが求められ、discouragedにするとPIN設定が求められず、UVが0で登録される |
eWBM GoldenGate USB-C | PIN | ble, hybrid, internal, nfc, usb | 1 | 1 | 0 | 0 | 1 | 0 |
ポイントとしては、
- Firefoxを使うとTransportが上手く取れない
- AndroidのChromeではcross-platform認証器のTransportがおかしい
- userVerificationをtrueにセットしてPIN未設定のYubikeyを使うと本来はPIN設定が求められるべきだと思うがそのまま登録ができてしまうケースがある
などあるので、結局はちゃんとflagsの値を見て期待通りの認証器の状態となっているかを確認しないといけない、、ということです。
0 件のコメント:
コメントを投稿