Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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にします。

スクリーンショット 2019-07-27 0.47.21.png

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

スクリーンショット 2019-07-27 0.46.20.png

注意点

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を選択する

スクリーンショット 2019-07-31 22.15.54.png

noby111
ARKitを使って個人アプリ開発をしています。 最近はFIDOを勉強しています。
https://portfolio-e3de3.firebaseapp.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away