LoginSignup
4
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-07-26

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

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1