Keycloakのパスキー実現方法

2024年6月3日(月)
岡井 倫人(おかい みちと)
連載2回目となる今回は、実際に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:パスキー登録前のサインイン方法設定画面

図5:パスキー登録前のサインイン方法設定画面

  • 5. サインイン画面(図6)が表示されるので、ユーザー名にtaro、パスワードにtaroを入力して、「Sign In」を押下します
図6:サインイン画面

図6:サインイン画面

  • 6. パスキー登録画面(図7)が表示されるので、「Register」を押下します
図7:パスキー登録画面

図7:パスキー登録画面

  • 7. パスキー登録用認証ポップアップ(図8)が表示されるので、認証を行います。今回は指紋認証を行います。
図8:パスキー登録用認証ポップアップ

図8:パスキー登録用認証ポップアップ

  • 8. 指紋認証に成功すると、パスキー登録成功ポップアップ(図9)が表示されるので、「OK」を押下します
図9:パスキー登録成功ポップアップ

図9:パスキー登録成功ポップアップ

  • 9. 登録パスキーの認証ラベル入力ポップアップが表示されます
  • 10. 登録パスキーの認証ラベル入力ポップアップに「windows」を入力し(図10)、「OK」を押下します
図10:登録パスキーの認証ラベル入力ポップアップ

図10:登録パスキーの認証ラベル入力ポップアップ

  • 11. サインイン方法設定画面(図11)が表示されるので、PasswordlessのPasskeyの箇所を確認し、windowsというラベルのパスキーが登録されていることを確認します。
図11:パスキー登録後のサインイン方法設定画面

図11:パスキー登録後のサインイン方法設定画面

これにより、taroユーザーにパスキーが登録されたので、実際にデバイスバウンドパスキーによる同一デバイス認証の動作確認を行います。動作確認手順は以下の通りです。

  • 1. パスキーを登録したデバイスでサンプルアプリケーションの設定画面(https://www.keycloak.org/app)にアクセスします(図12)。
図12:サンプルアプリケーションの設定画面

図12:サンプルアプリケーションの設定画面

  • 2. サンプルアプリケーションの設定画面でKeycloak URLに「https://example.com:8443」を入力し、「Save」を押下し、「Sign in」を押下します
  • 3. Keycloakのサインイン画面(図13)が表示されるので、「Try Another Way」を押下します
図13:Keycloakのサインイン画面

図13:Keycloakのサインイン画面

  • 4. 認証方法選択画面(図14)が表示されるので、「Passkey」を押下します。
図14:認証方法選択画面

図14:認証方法選択画面

  • 5. パスキーによるサインイン画面(図15)が表示されるので、「Sign in with Passkey」を押下します。
図15:パスキーによるサインイン画面

図15:パスキーによるサインイン画面

  • 6. パスキー選択ポップアップ(図16)が表示されるので、今回サインインするユーザーである「taro」を押下します。このように、表示されたユーザー名を押下するだけでよいので、パスキーによる認証では、ユーザー名の入力も必要ありません。
図16:パスキー選択ポップアップ

図16:パスキー選択ポップアップ

  • 7. 指紋認証ポップアップ(図17)が表示されるので、指紋認証を行います。
図17:指紋認証ポップアップ

図17:指紋認証ポップアップ

  • 8. 指紋認証に成功すると、サンプルアプリケーションのサインイン成功画面(図18)が表示されます。
図18:サンプルアプリケーションのサインイン成功画面

図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)。

図19:パスキー登録後のサインイン方法設定画面

図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)が表示されるので、指紋認証を行います
図20:認証ポップアップ

図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デバイス」を選択し、「次へ」を押下します
図21:デバイス選択ポップアップ

図21:デバイス選択ポップアップ

  • 7. QRコードポップアップ(図22)が表示されるので、QRコードをiPhone SE(第二世代)で読み込みます
図22:QRコードポップアップ

図22:QRコードポップアップ

  • 8. Windows PCにはデバイス続行ポップアップ(図23)が表示され、iPhone SE(第二世代)には指紋認証ポップアップ(図24)が表示されるので、iPhone SE(第二世代)で指紋認証を行います
図23:デバイス続行ポップアップ

図23:デバイス続行ポップアップ

図24:指紋認証ポップアップ

図24:指紋認証ポップアップ

  • 9. 指紋認証に成功すると、サンプルアプリケーションのサインイン成功画面が表示されます

このように、サンプルアプリケーションを利用しているデバイス(Windows PC)と認証を行うデバイス(iPhone SE(第二世代))が異なる場合でも、パスキーでサインインすることができました。家族のデバイス、または公共のデバイスなどの自身のパスキーが登録されていないデバイスで、アプリケーションにサインインする必要がある場合などに、パスキーを保持しているデバイスが近くにあれば、パスキーでサインインできるため、クロスデバイス認証は非常に便利です。

おわりに

本連載では、パスキーの仕組み、デバイスや導入サービスの状況、Keycloakを使ったパスキーによる認証の実現方法を紹介しました。パスキーを使うことで、安全性と利便性の高い認証を実現できること、そして、Keycloakを使うことで、簡単にパスキーによる認証を実現できることをご理解いただけたかと思います。今回の動作確認では、パスキーによるサインイン手順が少し煩雑でしたが、Keycloakではサインイン画面をカスタマイズできるため、「Try Another Way」などをクリックしなくてもすぐにパスキーでサインインできるように変更できます。デフォルトのサインイン画面についても、conditional UIをサポートするissueやパスキーによる認証を選択するまでの簡略化に関するissueなどがあるため、近い将来ユーザビリティが向上する見込みです。さらに、Keycloakを使用することで、パスキーによる認証と組み合わせて、シングルサインオンやアクセス制御などを実現できたり、最新の標準仕様に準拠できたりします。皆さんもぜひKeycloakの活用を検討してみてはいかがでしょうか。

著者
岡井 倫人(おかい みちと)
株式会社日立製作所 OSSソリューションセンタ
2020年7月からOSSソリューションセンタに配属。認証周りのOSSの開発、サポートに従事。 Keycloakコミュニティのコントリビュータである。

連載バックナンバー

セキュリティ技術解説
第2回

Keycloakのパスキー実現方法

2024/6/3
連載2回目となる今回は、実際にKeycloakを利用してパスキーの登録・認証を行う手順を紹介します。
セキュリティ技術解説
第1回

パスキーでサインインの安全性と利便性の課題を同時に解決

2024/4/22
第1回目となる今回は、パスキーの仕組みやパスキーを利用できるデバイスやサービスの状況、そしてKeycloakのパスキーへの対応状況などを紹介します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています