パスキーにおけるWeb Bluetooth APIの役割を理解しましょう。WebAuthnによるクロスデバイス認証(CDA)を、Bluetoothの利用可否検出がどのように強化するのかを解説します。
Vincent
Created: August 8, 2025
Updated: August 8, 2025
See the original blog version in English here.
Our mission is to make the Internet a safer place, and the new login standard passkeys provides a superior solution to achieve that. That's why we want to help you understand passkeys and its characteristics better.
パスキーは、ウェブにおける新しいログイン標準です。パスキーの核となる機能の一つが、BluetoothとQRコードを利用したクロスデバイス認証(CDA)です。この文脈で重要になるのが、もう一つのウェブAPIであるWeb Bluetooth APIです。
ウェブアプリがBluetoothデバイスと直接やり取りできるようにすることで、Web Bluetooth APIは、安全で効率的な認証プロセス(特にCDAにおいて)を確保する上で重要な役割を果たします。
この記事では、Web Bluetooth APIの仕組みを解説し、パスキー認証におけるBluetooth検出の意味合いを探ります。以下の問いに答えていきましょう。
Web Bluetooth APIは、ウェブアプリがBluetoothデバイスにアクセスし、通信できるようにするJavaScriptインターフェースです。HTML5標準の一部であり、Chrome、Edge、Operaなどのブラウザでサポートされています。このAPIにより、ウェブアプリは以下のことが可能になります。
Web Bluetooth APIには、3つの主要な関数があります。
getAvailability()
は、ユーザーエージェントがBluetoothをサポートできるか(つまり、デバイスにBluetoothモジュールが搭載されているか)を示すブール値で解決されるPromiseを返します。一部のユーザーエージェントでは、このメソッドが返す値を指定するオプションをユーザーが設定できます。
navigator.bluetooth.getAvailability().then((available) => { if (available) { console.log("This device supports Bluetooth!"); } else { console.log("Doh! Bluetooth is not supported"); } });
getDevices()
は、オリジンがアクセスを許可されているBluetoothDevices
の配列(範囲外や電源オフのデバイスも含む)で解決されるPromiseを返します。許可は、事前のBluetooth.requestDevice()
の呼び出しによって取得されます。
navigator.bluetooth.getDevices().then((devices) => { devices.forEach((device) => { console.log("Device:", device.name); }); });
requestDevice()
は、指定されたオプションを持つBluetoothDevice
オブジェクトへのPromiseを返します。選択UIがない場合、このメソッドは基準に一致する最初のデバイスを返します。
navigator.bluetooth .requestDevice({ filters: [ { services: ["battery_service"], }, ], }) .then((device) => { console.log("Device:", device.name); }) .catch((error) => { console.log("Error:", error); });
詳細とコードスニペットはこちらで確認できます。また、Web Bluetoothに関するW3C標準も参照してください。
navigator.bluetooth.requestDevice
によるデバイス検出は、セキュリティ上の理由から、タッチやマウスクリックなどのユーザー操作によってトリガーされる必要があります。Web Bluetooth APIがサポートされているかを確認するには、次のコードを使用します。
if ("bluetooth" in navigator) { // Web Bluetooth API is supported console.log("Web Bluetooth is supported!"); } else { // Web Bluetooth API is not supported console.log("Web Bluetooth is not supported!"); }
具体的な関数の呼び出し方については、上記で説明した通りです。
Web Bluetooth APIは、開発者とユーザーにいくつかの利点をもたらします。
多くの利点がある一方で、Web Bluetooth APIにはいくつかの制限もあります。
getAvailability()
がfalseを返すことがあります。これはPermissions-Policy:Bluetooth
によって制御されます。同様に、getAvailability()
がtrueを返しても、Bluetoothアダプターの電源が入っていなかったり、プロンプトが表示された際にユーザーがAPIの使用許可を拒否したりすることがあります。Web Bluetooth APIの採用はまだ拡大中です。2024年6月現在、Can I Useによると、世界のユーザーの76.53%がWeb Bluetooth APIをサポートするデバイスを使用しています。
しかし、SafariとFirefoxでのサポート欠如は依然として大きな障害であり、これらのブラウザでのユーザーエクスペリエンスに影響を与えています。また、一部の機能(例:Bluetooth.getDevices()
)はユーザーが明示的に有効にする必要があり、バックグラウンドでAPIを使用する際の課題となることがあります。
最新のデータはこちらで確認できます:https://developer.mozilla.org/ja/docs/Web/API/Web_Bluetooth_API#browser_compatibility
Relying Party(証明書発行元)が自社のウェブサイトやアプリケーションでパスキーを提供したい場合、Bluetoothが利用可能かどうかを把握しておくべき大きな理由が一つあります。
パスキーの革新的な新機能の一つが、**クロスデバイス認証(CDA)**です。これはハイブリッド認証としても知られています。この機能により、ユーザーはモバイルデバイスを使って、別のデバイス(通常はデスクトップやラップトップ)で認証できます。認証はQRコードとBluetoothを介して行われます。このハイブリッド認証方式はセキュリティと利便性を高め、シームレスなユーザーエクスペリエンスを提供します。技術に詳しくないユーザーの多くも、コロナ禍での登録や、後にデスクトップ対応を追加したモバイルファーストのメッセージングアプリ(例:WhatsAppやTelegram)を通じて、今ではQRコードのスキャンに慣れています。
CDA戦略の決定は、あらゆるパスキープロジェクトの初期段階で非常に重要です。CDAへの依存度が高まるほど、そのサポートと信頼性も向上させる必要があります。そのため、デバイスでBluetoothが利用可能かどうかを検出することが不可欠です。
しかし、すべてのデバイスにBluetooth機能が搭載されているわけではなく、またBluetoothがオフになっている場合もあります。パスキーを提供するRelying Partyにとって、Bluetoothの利用可否を検出し、CDAが使用できるか、あるいは別のフォールバック認証方法が必要かを判断することが不可欠です。Web Bluetooth APIは、ウェブアプリがユーザーデバイスのBluetooth利用可否を確認できるようにすることで、この解決策を提供します。
CDAは常に安定しているわけではなく、明確な理由なく接続に失敗することがある点に留意してください。さらに、APIが新しいため、APIから誤った結果が返されることもあります。
FirefoxとSafariでWeb Bluetooth APIが利用できないことは問題であり、特にFirefoxでは深刻です。
Safariはそれほど問題ではありません。なぜなら、CDAが実行される可能性のあるmacOSデバイスは、初期モデルからBluetoothを内蔵しているからです。しかし、macOSでBluetoothが機能しない場合、ユーザーはクロスデバイス認証で問題が発生し、設定のトラブルシューティングやフォールバック方法への切り替えが必要になるかもしれません。Safariを実行するiPhoneは、初代からBluetoothを内蔵しています。
しかし、Windowsデバイスで人気のFirefoxは大きな問題です。ユーザーがFirefoxでCDAを使用したい場合、Web Bluetooth APIが実装されていないため、Relying PartyはBluetoothが利用可能かどうかを確実に判断できません。これにより、ユーザーエクスペリエンスが低下し、ユーザーはどうすればよいかわからずに行き詰まってしまう可能性があります。
以前のブログでも見てきたように、Windowsデバイスはパスキーの採用という点で遅れをとっています(State of Passkeysも参照)。Bluetoothの普及状況を見てみましょう。
Windows 10には厳格なBluetooth要件はありませんが、最新のラップトップやデスクトップのほとんどはBluetooth機能を備えています。しかし、ユーザーがオフにしていたり、一部の構成、特に自作のデスクトップでは利用できない場合があります。
Windows 11もWindows 10と同様に、Bluetoothを必須とはしていません。しかし、より統合された最新のハードウェアへのトレンドにより、ほとんどのWindows 11互換デバイスはBluetooth機能を備えている可能性が高いです。それでも、ユーザーが無効にすることができ、CDAの実装に影響を与えます。
以下の表では、デスクトップデバイスがBluetoothに対応しており、CDAクライアントとして使用できるかどうかを判断できるかを示しています。
オペレーティングシステム | Bluetoothハードウェアサポート | ブラウザでのBluetooth検出 | |||
---|---|---|---|---|---|
Chrome | Edge | Firefox | Safari | ||
Windows 10 | 低 | ✅ | ✅ | ❌ | ❌ |
Windows 11 | 中 | ✅ | ✅ | ❌ | ❌ |
macOS | 高 | ✅ | ❌ | ❌ | ❌ |
ハードウェアがBluetoothに対応していても、ユーザーによってBluetooth機能がオフにされている可能性があることに注意してください。Bluetoothがオフの場合でも、ユーザーはそれを有効化する選択ができるため、CDAを使用できます。これはWindowsとMacで機能します。 macOSでのBluetooth有効化リクエスト
Windows 11でのBluetooth有効化リクエスト
Bluetoothの利用可否に関する情報は、特にWindows 10とWindows 11で重要です。これらのOSではBluetoothのサポートが低く、(パスキーベースのログインにおいて)クロスデバイス認証が必要になる可能性が非常に高いためです。最近のmacOSデバイスはすべてBluetoothをサポートしています。これらのmacOSデバイスは、iCloudキーチェーンに保存されたパスキーに直接アクセスできる可能性もあるため、懸念事項ではありません。
Windows 10およびWindows 11では、getAvailability()
を使用してBluetoothが機能するかどうかを確認します。ユーザーがWindows以外のパスキーしか持っていない場合は、すぐに他の認証オプションにフォールバックできます。
ハイブリッドパスキーしか利用できない状況でパスキー認証をトリガーしても、認証は成功せず、ユーザーは行き詰まってしまいます。残念ながら、Windows 10およびWindows 11上の他のすべてのブラウザでは、CDAがサポートされているかどうかを確認する他の方法はありません。
Web Bluetooth APIは、Bluetooth機能を通じてパスキー認証を強化するための強力なツールです。このAPIを理解し活用することで、開発者はより安全でユーザーフレンドリーな認証方法を構築できます。しかし、その制限にも対処し、さまざまなブラウザやデバイスでシームレスなユーザーエクスペリエンスを維持するために、堅牢なフォールバックメカニズムを確保する必要もあります。
この記事で、3つの中心的な問いに答えました。
getAvailability()
、getDevices()
、requestDevice()
などの関数を呼び出して、Bluetoothのサポート状況の確認、アクセス可能なデバイスの一覧表示、デバイスのペアリング要求を行います。Web Bluetooth APIに関する詳細情報やサンプル集については、こちらをクリックしてください。
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
Related Articles
Table of Contents