Edited at

WebAuthnでBLEデバイスを使う方法

iOSデバイスを外部認証機器と使うためにはCTAPのBLEの実装が必要ですが、どこのWebAuthnのデモサイトにアクセスしてもBluetooth機器の認証を目にすることができませんでした。

調べてみたところ、Bluetoothの認証が出るか否かはWebAuthnのサーバ側の設定ではなく、アクセス元のブラウザがWeb Bluetooth APIに対応しているか否かで決まるそうです。


Web Bluetooth APIとは


  • WebブラウザがBluetoothを制御するためのAPI

  • ChromeやOperaでは利用できるが、FirefoxやIEでは対応は微妙らしい


ChromeでWeb Bluetooth APIを有効にする方法

Web Bluetooth APIは隠し機能のため、通常の設定メニューには出てきません。

アドレスバーに chrome://flags/ を入力し、「Web Authentication API BLE support」をenableにします。

設定を行った上で、Webauthn.ioにアクセスすると、次のようにBluetoothセキュリティキーが選択肢に現れます。


注意点

iOSのBluetoothアプリを作成し、chromeのWebauthnと通信が行われるかを確認しましたが、OSのバージョン やBluetoothのバージョン によっては通信ができませんでした。


クライアント側


OS


  • Windows10 → NG(ChromeでWeb BluetoothをONにしても選択詞が出てこない)

  • macOS 10.14.3 → OK

  • macOS 10.15 beta4 → NG(BlueTooth Explorerでペアリングができない)


BlueTooth IF


  • 4.0 → OK

  • 4.2 → OK

    ※後述するBLEのペアリングをすればBlue Toothのバージョンに関わらず通信可能


認証機器側


OS


  • iOS 12.4 → OK

  • iOS 13 beta 4 → NG(Central側からの通信が受信されない)

今のところ、アプリの実装が試せそうなのは BlueTooth4.2を搭載の macOS 10.14とiOS12端末の組み合わせのみのようです。


BLEのペアリング方法

おそらくGoogle謹製のTitanを使えばBluetoothセキュリティーキーの選択詞を選んだ後にペアリングができるのでしょうが、自作のアプリではChrome経由でペアリングができません。

BlueTooth Explorerを使えばペアリングすることができました。


BlueTooth Explorerのインストール方法


  • Xcodeを起動

  • メニュー > OpenDeveloper Tool > More Developer Toolsを選択

  • Safariが起動し、ダウンロードページが開くので Additional Tools for Xcode をダウンロードする(バージョンはXcodeに合わせる)

  • dmgファイルを開いたイメージのHardwareディレクトリ配下にあるので/Applicationsにコピーする


BlueTooth Explorerを使ったBLEペアリング方法


  • BlueTooth Explorerを起動

  • メニュー > Devices > Low Energy Devices を開く

  • 下記のようなウィンドウが開くので、左のペインの自作アプリを選択

  • CTAPで規定されたServiceを開き、4つあるいずれかのCharacteristicを開く

  • この時点でiOSとmacOS側にペアリングを尋ねるダイアログが表示されるのでOKを選択する