【日替わり】Amazonタイムセール

QRコードを省略できるAndroidでのパスキーのクロスデバイス認証(Persistent Linking)

当サイトには広告を含みます。

当サイトでは、広告掲載ポリシーに沿って広告を掲載しています。
※広告でなく、単に商品やサービスを自主的に紹介しているだけという場合もあります。

"オススメ" として紹介している商品やサービスは、個人的にそう思えたものだけです。

共感、興味をもっていただけるものがあればご利用ください。

パスキーのクロスデバイス認証時、Android ではQRコードのスキャン(読み取り)を省略できるみたいですね。

私は普段 iPhone を使用しているため気付きませんでした。

Android を使用されている方にとっては当たり前の話かもしれませんが、なんとなくニッチな話題としてメモ程度にまとめておきます。

passkeys.devによると、非公式な名称としてPersistent Linking と呼ぶらしいです。

本記事の内容は、個人的な調査結果や経験、推測、感想に基づいています。
正確かどうか、最新かどうかについては適切な情報をご確認ください。

目次

QRコードを省略できるAndroidでのパスキーのクロスデバイス認証

PC等で認証をする際に、スマホ等の別デバイスでパスキーを使用するクロスデバイス認証についての話です。

以下の2つのデバイスがあるとします。

  • デバイスA: ブラウザやアプリ等で認証を求められる操作をしたPC等
  • デバイスB: その認証のためにパスキーを使用するスマホ等

これらのデバイスで、以下のようにクロスデバイス認証を行うケースです。

クロスデバイス認証の基本的な流れ
  1. デバイスA (PC等) のブラウザやアプリで認証要求
  2. 認証要求に対し、デバイスB (スマホ等) でのパスキー認証を行うことをデバイスA上で選択(※)
  3. デバイスAの画面に表示されたQRコードをデバイスBでスキャン
  4. デバイスBの画面ロック解除と同等の操作等によりパスキーを使用
  5. デバイスAのブラウザやアプリで認証完了(パスキー認証成功)

※ QRコードのスキャンについては、②の選択肢は特定のデバイスでなくiPhone、iPad、またはAndroidデバイスのようになっているはず

こんな選択肢で、デバイスを特定しない


上記の中で、③のQRコードのスキャンってけっこう面倒ですよね。具体的には、スマホを持ち上げてカメラ起動してPCのディスプレイに対して向きや距離を調整して…といった感じです。最近のスマホ、まぁまぁ重たかったりするので絶妙にダルいです。

しかし、デバイスBが Android であれば、初回のQRコードのスキャン時にデバイス間の接続を保存する設定(後述)をしておくことにより、次回以降のQRコードのスキャンを省略することができます。③のQRコードのスキャンをしなくても、代わりに該当のデバイスB (スマホ等) に表示される通知に応答するだけで後続の操作を進められます。

QRコードのスキャン省略による変更点
  1. (不要になる)デバイスAの画面に表示されたQRコードをデバイスBでスキャン

上記の③の操作が、以下のように変わります。

  1. 該当のデバイスB (スマホ等) に表示される通知に応答するだけ

まぁ顔認証ならスマホを持ち上げる必要性はあるかもしれませんが、かなり操作は楽になります。

ちなみに、③の前段である②のデバイス選択時には、具体的なAndroid端末名が表示されるようになります。通知を送信するAndroid端末名を具体的に選択できるということです。従来のようにQRコードを表示させる手順での認証も可能です。

②のデバイス選択時には具体的なAndroid端末名が表示
(たぶんBluetooth接続時の名前)

デバイス間の接続を保存する設定

Androidで初回のQRコードのスキャン時にデバイス間の接続を保存する設定というのは、以下のような操作のことです。

Android端末の種類等によって表示されるダイアログやメッセージの内容は異なります。

Androidとの接続を保存する設定の例

対象のAndroid端末で初回のQRコードのスキャン時に

  • このデバイス間の接続を保存する のチェックを有効化
  • 次回のQRコードをスキップしますか? と尋ねられた際にOKを選択

この設定は、対象のAndroid端末で新しいパスキーを登録した際や、既に登録済みのパスキーを対象のAndroid端末で初めて使用した際に可能です。なお、実際には初回というのは必須条件ではないようで、初回に設定しなかった場合でも、次回以降に設定できます。

例えばこんな画面です。

このデバイス間の接続を保存する のチェック

別パターンの画面はこちら(別サイト様)

この設定をしておけば、次回以降の同じサービス(RP)でのパスキー認証時には前述のようにQRコードのスキャンが不要になります。

私が試した際の環境

私が試した際の環境についてです。

上記のQRコードのスキャンを省略できる動作は、特定のブラウザに依存したものではなく、Androidを用いたクロスデバイス認証であれば利用できるものと理解しています(補足事項は後述)。

私が今回試したAndroid端末は、AQUOS wish3のスマホと、AvidPad というメーカーのA90というタブレットです。いずれもAndroidのバージョンは14で、同じGoogleアカウントでサインインした環境です(つまり、これらの2台ではGoogleパスワードマネージャーによる同期パスキーを利用可能)。

あと、PC側はWindows 11で、ブラウザはEdgeです(他のブラウザについては後述)。

もう少し詳しい設定や条件等は以下のとおりです。

  • 今回、パスキーの登録や認証の確認を行うサービス(RP)は amazon.co.jp
  • Android端末で生体認証をオンにしていなくてもパスコードの認証のみでパスキーのクロスデバイス認証に利用可能
  • PC側のWindowsの設定で、Bluetoothとデバイスモバイルデバイスの中で、モバイルデバイスへのアクセス許可やスマートフォン連携の設定はオフのままで動作可能
  • Androidの再起動直後はクロスデバイス認証が失敗するかも(ちょっと待ってやり直せばOK)
クロスデバイス認証時のAndroid端末側の通知

amazon.co.jpのパスキーに関するヘルプページはこちらや、こちら

もう少し詳しく理解(推察)

このQRコードのスキャンを省略できるクロスデバイス認証について、もう少し理解を深めてみます。推察も含みます。

Persistent Linking

まず機能の名称についてですが、passkeys.devによると、このQRコードのスキャンを省略できるクロスデバイス認証のことを、非公式な名称としてPersistent Linking と呼ぶらしいです。

Persistent Linking
The informal name for creating a relationship between a Cross-Device Authentication authenticator (typically a phone or tablet) and Cross-Device Authentication client (typically a laptop or desktop), which enables future use without having to scan a QR code.

Both the client and authenticator must support the functionality.

Example with an Android phone linked to a Windows 11 device
出典:passkeys.dev – Terms

公式(FidoAlliance関連)やプラットフォーム側で “Persistent Linking” についての言及は、passkeys.devMicrosoftに地味めに記載があります。一方で、GoogleやAppleでは “Persistent Linking” に関する言及は見当たりませんでした。

Starting in Windows 11 version 23H2, FIDO Cross-Device Authentication (CDA) is supported globally at the operating system level and available for all apps and browsers. Persistent linking is available between Android devices (authenticator) and Windows 11 23H2+. iOS and iPadOS do not support persistent linking.

In Windows versions prior to 11 23H2, including Windows 10, support for FIDO Cross-Device Authentication (CDA) is only available in Chrome and Edge. It is not available globally. Persistent linking is available between Android devices (authenticator) and Chrome and Edge (clients) on these versions. iOS and iPadOS do not support persistent linking.

出典:passkeys.dev – Windows

ということで、以降は Persistent Linking という表現も使用します。

対応する環境の実際

この Persistent Linking(QRコードのスキャンを省略できる動作)は、特定のブラウザに依存したものではなく、Androidを用いたクロスデバイス認証であれば利用できるものと理解しています。

しかし実際のところ、以下のような点に留意が必要そうです。

Persistent Linkingの対応環境についての留意点

私が確認した限りでの推察です。

  • 認証要求を受ける操作元(前述の例におけるデバイスA)が Windows の場合にのみ利用できる機能かも。
  • Androidで利用できるパスキーの話なので、passkey provider (credential manager) として Google パスワードマネージャーを使うケースが多いと思われる(補足事項は後述)。
  • Windows PCの代わりに macOSは未確認。
  • Windows PCの代わりに iPhone (iOS) でもAndroidを用いたクロスデバイス認証はできるけど、その際にAndroid側で Persistent Linking の設定メニューは表示されなかった(接続を記憶できず)。
  • ブラウザに関しては、Firefoxであってもデバイス間の接続を記憶したAndroidを選択でき、QRコードのスキャン省略が可能だった(ブラウザでなくOSが表示する実装になったということ?)。

今後も対応状況に変更はあると思います。

保存したデバイス間の接続情報の管理

私が試した際に、ややこしいと言うかちょっと気持ち悪いと思ったのは、デバイス間の接続を保存するという設定でありながら、PCとAndroidのどちらの設定画面においてもその情報が保存あるいは登録されていることを確認できない点です。

  • Android端末のBluetoothのデバイス一覧にはPCが表示されない
  • PC側のWindowsの設定で、Bluetoothとデバイスデバイスにも対象のAndroid端末が表示されない

標準の設定画面から辿れる他の項目でも、保存した接続情報は確認できません。

つまり、このデバイス間の接続を解除したい場合にどうすれば良いのか、パッと見よく分かりません。例えば、Androidのスマホを買い替えたら古い方の接続を削除したいですよね。その方法が分からないということです。

一応、この削除手順については別記事を作成して移したいと思いますが(しないかもしれませんが)、以下のように削除はできました(MicrosoftのQ&Aを参考に)。

Windowsのレジストリ操作なので自己責任でご参考ください。

デバイス間の接続の記憶をした後は、対象のWindowsのレジストリにおいて以下のパス配下に値が格納されています。

コンピューター\HKEY_USERS\S-1-5-20\Software\Microsoft\Cryptography\FIDO\xxx\LinkedDevices\yyy

Nameの値にAndroidのデバイス名(認証時に表示されるもの)が格納されているので、不要なNameを含むキー(yyy)を削除すれば、以降は対象のサービス(RP)で認証要求があった際に表示されなくなります。

試した限りでは、削除した後でも再登録すれば復活もします。

デバイス間の接続の保存が無く、また他に選択可能なパスキーも無ければ、次回の認証時には選択肢は表示されなくなるはずです(QRコードが最初から表示される動作になる等)。

一方、Android側にはこのような操作に関わる情報が保存されているといった話は見当たりませんでした。通知のきっかけはPC側なので、そちらに保存できていれば良いのでしょう。たぶん。

とりあえず、現状の実装はこんな感じなのだと思います。そのうち管理UIが出てくるかもしれません。

通知の仕組み

Persistent Linking(QRコードのスキャンを省略できる動作)を用いたクロスデバイス認証では、PC側(前述の例におけるデバイスA)で認証要求があった際にAndroidを選択すると、そのAndroidにプッシュ式の通知が表示されます。

私が確認した限りの推察ですが、この通知は以下の経路で行われているように思います。

①PC(認証要求を受けたデバイス) → ②Googleの何かしらのインフラ(推察) → ③対象のGoogleアカウント → ④対象のAndroidデバイス

PCでなくRPから②に送信している可能性もあると思うのですが、詳しく調べていません。たぶんPCからなのかと。②は、Google Play Services(GMS)やFirebase Cloud Messaging(FCM)などのバックエンドを経由すれば実現できるのかなと思いますが、よく分かりません。

Android側がロック解除前の状態で表示される通知には、”Google Play 開発者サービス” と書かれているので、④でAndroid端末側はそれ経由で通知を受け取っているのかと思います。

この通知の後は、QRコードを読み取るパターンのクロスデバイス認証と同様で、PCとAndroid間でのBluetooth接続(BLE)、およびAndroidでのロック解除と同等の操作等によるパスキーの使用が行われ、パスキー認証が完了します。

上記の通知の経路はどういうものかと言うと、例えば、Android端末からインターネット接続できる状態でないと通知が届きません。また、Androidの設定Google→(Googleアカウント選択)→このデバイスのアカウントを管理所有者のアカウントでGoogleアカウントを削除した場合にも通知は届かなくなります(Googleアカウントを再登録してGoogleパスワードマネージャーの初回の本人確認を終えると復活します)。Bluetoothだけをオフにすると、”Bluetoothをオンにしてください” という通知が表示されます。

Androidの設定Googleで、デバイス付近のデバイスのスキャン複数デバイス間サービスを使用するをオフにしても通知は届きました。関係無いようです。また設定Google→(Googleアカウント選択)→このデバイスのアカウントを管理パスワード、パスキー、データのサービスを無しにしても通知は届きました(ただし、Androidでパスキーを利用できなくなるのでその後の認証はできません)。

上記より、実質的にGoogle パスワードマネージャー以外の passkey provider では Persistent Linking を利用できないのではないかという気もします。例えば、1Passwordとかだと動作しないかもしれませんが、Googleが親切に実装していれば動作するかもしれません。とりあえず今のところ試す機会は無さそうです。

なので、Android の Persistent Linking の通知機能は、AndroidだけでなくGoogleのプラットフォームを幅広く活用した複雑な機能のように感じました。QRコードのスキャンを省略するための裏側がこれだと考えるとすごい。

(補足)Chromeで試した結果

amazon.co.jpで試した限り、Chromeではクロスデバイス認証を選択できないケースが多かったので、上記はEdgeで試した結果をまとめてありますが、以下にChromeで試した結果をメモしておきます。

少なくとも amazon.co.jp へのログイン時には、Chromeの場合、認証時にローカルに利用可能なパスキー(Windows Hello)があればそれが優先される動作のようで、クロスデバイス認証を選択できませんでした(Googleアカウントにログインしていないシークレットモードであっても同様で、よく分かりませんでした)。ローカルに利用可能なパスキーが無い状態であれば(amazon.co.jp上でパスキー登録をいったん削除)、クロスデバイス認証(※)が可能になりました。あとは、ログイン時でなくパスキー追加の際に要求される認証時にもクロスデバイス認証(※)が可能になりました。
※QRコードの読み取りや、登録済みのAndroidデバイスが選択肢として表示される動作

あと、これは試す際の環境の準備の仕方が良くないだけですが、パスキーを amazon.co.jp に複数登録してあると、どのパスキープロバイダーを使って認証しているのか判別できなくなったりします。

公式(FidoAlliance)や各プラットフォームでの言及

“Persistent Linking” という表現でなく、単にQRコードのスキャンを省略できる動作についての説明が各所で地味めに言及されています。

Passkey Central (FidoAlliance) での説明は以下です。

  1. Android only: Sign in dialog, Save QR code.
    On Android only, if this is the user’s first time using cross-device sign-in, they are prompted to skip or save the QR code for future access.
    The dialogue then prompts the user to sign in or decline to sign in with a passkey for a specified email. If the user opts to sign in with a passkey by selecting the OK button on Android or the Confirm button on iOS, the mobile OS prompts the user to use their screen lock to authenticate.
    Cross-Device Sign-In | Passkey Central

以下はMicrosoft Authenticatorによるパスキー認証時の説明です。

For quicker sign-in, Android allows you to remember some browsers and Windows devices after you scan the WebAuthn QR code. In such cases, instead of having to scan a QR code each time, you can select the device and receive a notification to continue the passkey authentication.
Sign in with passkeys in Authenticator for Android and iOS devices – Microsoft Entra ID | Microsoft Learn

以下はブラウザ側(Chrome)のヘルプです。

ヒント: モバイル デバイスで QR コードをスキャンした後、デバイス同士を記憶させるかどうかを選択できます。記憶しておくと、パスキーが必要な場合にモバイル デバイスが選択項目としてパソコンに表示されます。選択すると、デバイスに本人確認の通知が届きます。
Chrome でパスキーを管理する – パソコン – Google Chrome ヘルプ

この機能がやんわりと意識されている印象です。

iOSでは毎回QRコードをスキャンが必要

ついでに iPhone (iOS) の場合について。

上記のQRコードのスキャンをスキップできる動作は Android 固有のものなので、iPhone (iOS) では利用できません。

よって、iPhone でパスキーを使用してクロスデバイス認証を行うには、毎回QRコードのスキャンが必要です。

便利なので、今後 iPhone でも使えるようになったりするんですかね?Apple がやらないパターン?

PCとスマホが都度QRコードをスキャンした上で接続される点にメリットを感じられれば、それはそれで良いと思います。

まとめ

パスキーのクロスデバイス認証時、AndroidであればQRコードをスキャン省略できる動作についてでした。

そもそも同期パスキー環境をちゃんと用意できていれば、普段使用するデバイスでクロスデバイス認証をわざわざ利用する機会は無いはずなので、本記事に記載した動作はニッチかと思います。

ただ一応、Windows Hello未対応のPCを使用しているケースや、スマホにしかパスキー保存できていないケース(Entra ID用のパスキーをMicrosoft Authenticator の device-bound passkey として保存する運用など)あたりでは利用機会があるかもしれません。

著:えーじ, 著:倉林 雅, 著:小岩井 航介
¥3,234 (2025/08/22 07:26時点 | Amazon調べ)
記事作成、サイト管理
プロフ画像 (暫定版v2)

happynap
(はっぴぃなっぷ)

3人家族で暮らし
ITっぽい仕事をしつつ
ポイ活、投資を趣味的に
スキマ時間に、ゆるく全力でブログ
のんびり昼寝したい

お得情報

出張、旅行のホテル予約はお早めに

目次