Keycloakのパスキー実現方法
同一デバイス認証の動作確認
Keycloakの設定が完了したので、同一デバイス認証の動作確認をします。今回は、以下の2つの動作確認をします。
- デバイスバウンドパスキーによる同一デバイス認証
- 同期パスキーによる同一デバイス認証
デバイスバウンドパスキーによる同一デバイス認証
はじめにデバイスバウンドパスキーによる同一デバイス認証の動作確認です。今回はWindows Helloを使用します。まずは、パスキーをKeycloakに登録します。登録する手順は以下の通りです。
- 1. アカウントコンソール(https://example.com:8443/realms/myrealm/account/)にアクセスします
- 2. サインイン画面が表示されるので、ユーザー名taro、パスワードtaroを入力して、「Sign In」を押下します
- 3. 「Account Security」、「Signing in」の順で押下します
- 4. サインイン方法設定画面(図5)が表示されるので、Passwordlessの「Set up Passkey」を押下します。
- 5. サインイン画面(図6)が表示されるので、ユーザー名にtaro、パスワードにtaroを入力して、「Sign In」を押下します
- 6. パスキー登録画面(図7)が表示されるので、「Register」を押下します
- 7. パスキー登録用認証ポップアップ(図8)が表示されるので、認証を行います。今回は指紋認証を行います。
- 8. 指紋認証に成功すると、パスキー登録成功ポップアップ(図9)が表示されるので、「OK」を押下します
- 9. 登録パスキーの認証ラベル入力ポップアップが表示されます
- 10. 登録パスキーの認証ラベル入力ポップアップに「windows」を入力し(図10)、「OK」を押下します
- 11. サインイン方法設定画面(図11)が表示されるので、PasswordlessのPasskeyの箇所を確認し、windowsというラベルのパスキーが登録されていることを確認します。
これにより、taroユーザーにパスキーが登録されたので、実際にデバイスバウンドパスキーによる同一デバイス認証の動作確認を行います。動作確認手順は以下の通りです。
- 1. パスキーを登録したデバイスでサンプルアプリケーションの設定画面(https://www.keycloak.org/app)にアクセスします(図12)。
- 2. サンプルアプリケーションの設定画面でKeycloak URLに「https://example.com:8443」を入力し、「Save」を押下し、「Sign in」を押下します
- 3. Keycloakのサインイン画面(図13)が表示されるので、「Try Another Way」を押下します
- 4. 認証方法選択画面(図14)が表示されるので、「Passkey」を押下します。
- 5. パスキーによるサインイン画面(図15)が表示されるので、「Sign in with Passkey」を押下します。
- 6. パスキー選択ポップアップ(図16)が表示されるので、今回サインインするユーザーである「taro」を押下します。このように、表示されたユーザー名を押下するだけでよいので、パスキーによる認証では、ユーザー名の入力も必要ありません。
- 7. 指紋認証ポップアップ(図17)が表示されるので、指紋認証を行います。
- 8. 指紋認証に成功すると、サンプルアプリケーションのサインイン成功画面(図18)が表示されます。
以上がデバイスバウンドパスキーによる同一デバイス認証の動作確認になります。パスワードを入力せずに、サインインすることできました。
ただし、デバイスバウンドパスキーはデバイスに紐づいているので、もし複数のデバイスでパスキーを使って認証したい場合、デバイスごとにパスキーを登録する必要があります。そのため、デバイスを紛失した時や機種変更の際には、再度パスキーの登録が必要になります。
同期パスキーによる同一デバイス認証
次に同期パスキーによる同一デバイス認証の動作確認です。今回は同じApple IDでサインインしている2台のiPhone 13とiPhone SE(第二世代)を使用します。今回はiPhone 13を使用してパスキーを登録し、iPhone SE(第二世代)を使用してパスキーによる認証を行います。まずは、Keycloakの管理コンソールでWebauthn Passwordless PolicyのAttestation conveyance preferenceを「Not specified」に設定します。次に、iPhone 13を使用して、taroユーザーにパスキーを登録します。パスキーの登録手順は、「デバイスバウンドパスキーによる同一デバイス認証」で紹介しているため、省略します。今回はパスキーの認証ラベルを「apple」としたので、サインイン方法設定画面にappleというラベルのパスキーが追加されます(図19)。
パスキーの登録が完了したので、実際に同期パスキーによる同一デバイス認証の動作確認を行います。同期パスキーはパスキーの登録を行っていないデバイス、つまりiPhone SE(第二世代)にも同期されるので、iPhone SE(第二世代)でサインインできることを確認します。動作確認手順は以下の通りです。一部の手順は「デバイスバウンドパスキーによる同一デバイス認証」と共通なので、図は省略しています。
- 1. iPhone SE(第二世代)でサンプルアプリケーションの設定画面(https://www.keycloak.org/app)にアクセスします
- 2. Keycloak URLに「https://example.com:8443」を入力し、「Save」を押下し、「Sign in」を押下します
- 3. Keycloakのサインイン画面が表示されるので、「Try Another Way」を押下します
- 4. 認証方法選択画面が表示されるので、「Passkey」を押下します
- 5. パスキーによるサインイン画面が表示されるので、「Sign in with Passkey」を押下します
- 6. 認証ポップアップ(図20)が表示されるので、指紋認証を行います
- 7. 指紋認証に成功すると、サンプルアプリケーションのサインイン成功画面が表示されます
このように、パスキーを登録したiPhone 13以外のiPhone SE(第二世代)を使用しても、パスキーでサインインすることができました。今回の場合、同期パスキーはApple IDに紐づいているので、同じApple IDでサインインしているiPhoneやiPadなどであれば、デバイスごとにパスキーを登録する必要はありません。そのため、デバイスを紛失した時や機種変更した時でも、デバイスバウンドパスキーと異なり、パスキーの再登録は不要になります。
クロスデバイス認証の動作確認
最後にクロスデバイス認証の動作確認をします。デバイスバウンドパスキーによるクロスデバイス認証でも同期パスキーによるクロスデバイス認証でも、パスキーを保持しているデバイスでQRコードを読み込んで、パスキーによる認証を行う流れは同じため、今回は同期パスキーによるクロスデバイス認証のみ動作確認します。
同期パスキーによるクロスデバイス認証
今回は「デバイスバウンドパスキーによる同一デバイス認証」で使用したWindows PCと「同期パスキーによる同一デバイス認証」で使用したiPhone SE(第二世代)を使用します。また、「同期パスキーによる同一デバイス認証」で登録したパスキーを使用しますので、パスキーの登録は必要ありません。ただし、クロスデバイス認証はアプリケーションを利用しているデバイスにパスキーが存在しないユースケースで使われることが多いため、Windowsからパスキーを削除しておきます。「Windowsの設定アプリケーション>アカウント>パスキーの設定」からパスキーを削除できます。
また、クロスデバイス認証の前提条件として、Windows PCとiPhone SE(第二世代)はBluetoothで接続されている必要があります。動作確認手順は以下の通りです。一部の手順は「デバイスバウンドパスキーによる同一デバイス認証」と共通なので、図は省略しています。
- 1. Windows PCでサンプルアプリケーションの設定画面(https://www.keycloak.org/app)にアクセスします
- 2. Keycloak URLに「https://example.com:8443」を入力し、「Save」を押下し、「Sign in」を押下します
- 3. Keycloakのサインイン画面が表示されるので、「Try Another Way」を押下します
- 4. 認証方法選択画面が表示されるので、「Passkey」を押下します
- 5. パスキーによるサインイン画面が表示されるので、「Sign in with Passkey」を押下します
- 6. デバイス選択ポップアップ(図21)が表示されるので、「iPhone、iPad、またはAndroidデバイス」を選択し、「次へ」を押下します
- 7. QRコードポップアップ(図22)が表示されるので、QRコードをiPhone SE(第二世代)で読み込みます
- 8. Windows PCにはデバイス続行ポップアップ(図23)が表示され、iPhone SE(第二世代)には指紋認証ポップアップ(図24)が表示されるので、iPhone SE(第二世代)で指紋認証を行います
- 9. 指紋認証に成功すると、サンプルアプリケーションのサインイン成功画面が表示されます
このように、サンプルアプリケーションを利用しているデバイス(Windows PC)と認証を行うデバイス(iPhone SE(第二世代))が異なる場合でも、パスキーでサインインすることができました。家族のデバイス、または公共のデバイスなどの自身のパスキーが登録されていないデバイスで、アプリケーションにサインインする必要がある場合などに、パスキーを保持しているデバイスが近くにあれば、パスキーでサインインできるため、クロスデバイス認証は非常に便利です。
おわりに
本連載では、パスキーの仕組み、デバイスや導入サービスの状況、Keycloakを使ったパスキーによる認証の実現方法を紹介しました。パスキーを使うことで、安全性と利便性の高い認証を実現できること、そして、Keycloakを使うことで、簡単にパスキーによる認証を実現できることをご理解いただけたかと思います。今回の動作確認では、パスキーによるサインイン手順が少し煩雑でしたが、Keycloakではサインイン画面をカスタマイズできるため、「Try Another Way」などをクリックしなくてもすぐにパスキーでサインインできるように変更できます。デフォルトのサインイン画面についても、conditional UIをサポートするissueやパスキーによる認証を選択するまでの簡略化に関するissueなどがあるため、近い将来ユーザビリティが向上する見込みです。さらに、Keycloakを使用することで、パスキーによる認証と組み合わせて、シングルサインオンやアクセス制御などを実現できたり、最新の標準仕様に準拠できたりします。皆さんもぜひKeycloakの活用を検討してみてはいかがでしょうか。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- パスキーでサインインの安全性と利便性の課題を同時に解決
- クラウドネイティブな環境でKeycloakによるシングルサインオンを実現
- 注目のWebAuthnと公式より早いKeycloak最新動向を紹介!OSSセキュリティ技術の会 第5回勉強会
- FIDO AllianceのAPACサミット開催、ベトナムのITの進化に瞠目!
- OSSのセキュリティや開発ツール、実行基盤などの最前線の最新情報・動向が得られる ―「DevConf.cz 2020」レポート
- サイバー攻撃を自ら呼び寄せる人のiPhone設定とは?
- APIファーストの設計ツール「Apicurio」「Microcks」を使ってみよう!
- Realmアプリの機能を利用して認証機能を作ろう(後編)
- Tomcatのサーバ設定
- Keycloakのクライアントポリシー(Client Policies)