月別アーカイブ: 2024年6月

KeycloakでPasskey認証連携のWebサイトへアクセス(同期パスキーとデバイスバウンドパスキーの動作検証)

Passkey(パスキー)は、パスワードの代わりに生体認証でログインできる、新しい認証方法です。

従来のパスワードと異なり、漏洩や盗難の心配が少なく、より安全に各種サービスを利用できます。スマートフォンやパソコンなど、複数のデバイスで利用可能です。

Keycloakを利用してWebアクセス時にPasskey認証が利用できるかの確認を行いました。また同期パスキーやデバイスバウンドパスキーの動作およびクロスデバイス認証の動作も検証してみました。

 

同期パスキーとデバイスバウンドパスキーの違い

従来の「FIDO2」では、秘密鍵の保存先として 2.デバイスに依存して保存・利用するデバイスバウンドパスキーのみに対応していました。

一方、FIDO2の拡張規格である 「Passkey 」認証 では、1.デバイス間で同期できる同期パスキーと、2.デバイスに依存して保存・利用するデバイスバウンドパスキーの2種類をサポートしています。

今回検証の「Passkey」認証ではどちらもサポートしていますが、保存方法と利用方法に違いがあります。

 

Passkey 認証

  1. 同期パスキー( Synced passkeys )
  2. デバイスバウンドパスキー( Device bound passkeys )

 

 

 

 

 

 

 

 

項目 1.  同期パスキー
2.デバイスバウンドパスキー
保存方法 クラウドサービスを利用 特定のデバイス内に保存
利用方法 複数のデバイスで利用可能
1つのデバイスのみ利用可能
メリット 紛失・故障時の復旧が容易 より高い安全性
デメリット セキュリティリスクがやや高い
複数のデバイスで利用できない

 

クロスデバイス認証とは

クロスデバイス認証とは、スマートフォンのパスキー認証を利用して、認証機能を持たないPCなどのデバイスからアクセスさせる機能です。

 

Bluetooth利用時のクロスデバイス認証のフロー

  1. PC端末でパスキー認証のターゲットWebへブラウザでアクセス
  2. PC端末側のブラウザにQRコードを表示
  3. QRコードをスマートフォンでスキャン
  4. スキャンしたQRコードをスマートフォンでパスキー認証
  5. Bluetooth通信によりスマートフォンとPC間で認証連携
  6. PCのブラウザでターゲットWebへログイン

 

 

検証したパスキー認証の構成パターン

A. 同期パスキー登録による、同期パスキーを登録した同じ機器での認証&Webへのアクセス
➡ iPadでパスキー登録 ⇒ 同一のiPadで認証
➡ Android Galaxy A23でパスキー登録 ⇒ 同一のAndroid Galaxy A23で認証

 

B. 同期パスキー登録による、異なる機器でのクロスデバイス認証&Webへのアクセス
➡ iPadでパスキー登録  ⇒ Note-PC / Desktop-PC で認証連携
➡ Android Galaxy A23 でパスキー登録  ⇒ Note-PC / Desktop-PC で認証連携

 

C. デバイスバウンドパスキーによる認証&Webへのアクセス
➡ USB指紋認証器でパスキー登録 ⇒ USB指紋認証器で認証

 

 

同期パスキーの機器構成

2024年6月の検証時のバージョンです

機器 OS 端末やサーバー 備考 動作
iPad (第6世代)
iOS 17.3.1 ・同期パスキーを登録した機器
・Touch ID
Safari 604.1 ✅
Galaxy A23

Android 13 ・同期パスキーを登録した機器
・指紋認証
Chrome 125.0.6422.165 ✅
Windows ノートPC
Windows 11
version 22H2
・クロスデバイス認証の端末
・Bluetooh 4.0(内蔵)
Firefox 126.0.1
Edge 125.0.2535.79
Chrome 125.0.6422.142
✅
✅
✅
Windows PC
Windows 11
version 22H2
・クロスデバイス認証の端末
・TP-link  (Bluetooh 5.0 / USB)
Firefox 126.0.1
Edge 125.0.2535.79
Chrome 125.0.6422.142
✅
✅
✅
Synced Passkeys
・iCloudキーチェーン
・Googleパスワードマネージャー
Keycloak アプライアンス
Keycloak 24.0.5
RockyLinux 9.4
・Keycloakを運用 Powered BLUE for idP
Web アプライアンス
AlmaLinux 9.4 ・Passkey認証連携のWebを運用 Powered BLUE 890

* iOS 17.x 以降でクロスデバイス認証に対応
* Android 13 以降でクロスデバイス認証に対応
* Bluetooth 4.0以降でクロスデバイス認証に対応

 

 

デバイスバウンドパスキーの機器構成

2024年6月の検証時のバージョンです

機器 OS 端末やサーバー 備考 動作
Windows ノートPC
Windows 11
version 22H2
・デバイスバウンドパスキーの端末
・EzFinger2(USB接続の指紋認証器)
Firefox 126.0.1
Edge 125.0.2535.79
Chrome 125.0.6422.142
✅
✅
✅
Windows PC
Windows 11
version 22H2
・デバイスバウンドパスキーの端末
・EzFinger2(USB接続の指紋認証器)
Firefox 126.0.1
Edge 125.0.2535.79
Chrome 125.0.6422.142
✅
✅
✅
Keycloak アプライアンス
Keycloak 24.0.5
RockyLinux 9.4
・Keycloakを運用 Powered BLUE for idP
Web アプライアンス
AlmaLinux 9.4 ・Passkey認証連携のWebを運用 Powered BLUE 890

* 指紋認証器としては、USB接続の「FIDO2対応の製品」が利用できます(Yubiko / 他)

 

パスキー対応ネットワーク構成

機器構成

  • Webサーバー
  • Keycloakサーバー
  • クライアントの機器( スマートフォンやPC端末 )
  • ブラウザ( プラグイン不要 )

 

同期パスキーを利用の場合には

  1. iCloudキーチェーン
  2. Googleパスワードマネージャー

などのクラウドサービスと連携

 

 

 

 

 

 

Keycloakの運用

Keycloakを簡単に構築運用できる ➡「Powered BLUE for idP」を利用します

 

 

 

 

Keycloakアプライアンスの主な機能

  •  サーバーの設定(Network / Firewall )
  •  ウィザードによるKeycloakの構成(スタンドアロンやクラスター)
  •  DB設定
  •  Keycloak のバックアップ、リストア、アップグレード
  •  SSLサーバー証明書登録 ( トラストストア対応 )
  •  keycloak へのアクセスポート ( 80 / 443 )
  •  リバースプロキシ構成 ( 80 / 443 )
  •  アクティブモニタ(サービス監視・再起動・管理者への通知)
  •  ベースOS AlmaLinux 9.x / RockyLinux 9.x / RedHat 9.x に対応

 

 

Passkey認証に対応のWebの運用

Passkey認証連携のWebを簡単に構築運用できる ➡「Powered BLUE Web 」を利用します

 

 

主な機能

  •  Web / Mai l / DNS / ftp (インターネットサーバー機能)
  •  送信ドメイン認証 (DKIM / DMARC / SPF)
  •  ベースOS AlmaLinux 9.x / RockyLinux 9.x / RedHat 9.x に対応

Passkey認証連携のWebを構築&運用できます

Passkey認証連携Web

 

Keycloakの設定手順

  1. レルムの作成
  2. Webとの連携設定
  3. ロールの作成
  4. ユーザーの作成
  5. ロールのアサイン
  6. 認証フローの作成(Webauthn Passwordless もしくはWebauthn ポリシーの設定)
  7. Bind flow
  8. 認証ポリシーの設定

 

1.レルムの作成

今回は、「passkey-demo」というレルムを作成します

 

 

 

 

 

 

 

(レルムの作成 / 画面のクリックで拡大)

 

2. Webとの連携設定

Webサーバ側のxmlファイルをKeycloakの「Passkey-demo」のレルムに読み込ませます。またKeycloak側のxmlファイルをWeb側に登録して、KeycloakとWebの連携を構成します。

 

3.ロールの作成

今回は、「passkey-demo-role」を作成します

 

 

 

 

 

 

 

(ロールの作成 / 画面のクリックで拡大)

 

4.ユーザーの作成

今回は、ユーザーアカウント「passkey-demo-user」を作成します

 

 

 

 

 

 

 

( ユーザーの作成 / 画面のクリックで拡大)

 

 

5.ロールのアサイン

作成したユーザーアカウント「passkey-demo-user」へロール「passkey-demo-role」をアサインします

 

 

 

 

 

 

 

( ロールのアサイン / 画面のクリックで拡大)

 

 

6.認証フローの作成

Passkey認証に際しては、以下のいずれかを利用して

  1. Webauthn Passwordless Authenticator
  2. Webauthn Authenticator

ポリシーを設定して 例「passkey-demo-flow」という名称で保存します

 

今回は、Webauthn Authenticator を利用して設定します

 

 

 

 

 

 

 

( 認証フローの作成 / 画面のクリックで拡大)

 

7.Bind flow

作成した「passkey-demo-flow」ポリシーを、「Browser flow」へバインドします。今回作成の「passkey-demo-flow」がブラウザでのログインに適用されます。

 

8.認証ポリシーの設定

  1. Webauthn Passwordless Authenticator
  2. Webauthn Authenticator

の認証のポリシー(詳細)を設定します

今回は、Webauthn Authenticator を設定します

 

 

 

 

 

 

 

 

 

( 認証ポリシーの設定 / 画面のクリックで拡大)

 

ポリシー項目としては、今回は以下のような設定

項目 設定値 内容
リーディング・パーティエンテイティ URL KeycloakのURL 例 https://keycloak-passkey.xxx.com/
署名アルゴリズム E256 認証に使用する署名アルゴリズム
期待する構成証明伝達 Not Specified
オーセンティケーター・アタッチメント Not Specified
常駐鍵が必要 Not Specified
ユーザー検証要件 Requried
タイムアウト 設定なし
許容可能なAAGUID 指定なし
エクストラオリジンズ 指定なし

 

A. 同期パスキー設定 / 登録したiPad本体でのアクセス認証

  1. iPadのsafariブラウザでターゲットのWebサイトへアクセス   ( https://target-web.xyz.com )
  2. Keycloakへリダイレクト  ( https://keycloak-passkey.xxx.com/…….  )
  3. ID / Passwd の入力(Webauthn Passwordless Authenticatorの場合にはパスワード入力不要)
  4. 初回はユーザーのTouch IDのPublic Keyの登録
  5. Passkey認証(Touch ID)
  6. 認証後にターゲットのWebサイトへログイン  ( https://target-web.xyz.com )

 

1-2-3. keycloakへリダイレクト

ID / Passwd入力

 

 

 

 

 

 

 

 

 

4. 初回はユーザーのTouch IDのPublic Keyの登録

 

 

 

 

 

 

 

パスキー(秘密鍵)の保存先を選択

例 同期パスキーの場合は iCloud キーチェーン を選択

 

 

 

 

 

 

 

 

 

 

 

 

KeycloakへPublick Keyを保存時のラベル名を設定

例 WebAuthn Authenticator passkey-demo

 

 

 

 

 

 

 

 

5-6. Touch ID 認証後にWebへログイン

 

 

 

 

 

 

 

 

* Android Galaxy A23 も同様の操作手順となります

 

 

B. クロスデバイス認証 / PCでの認証連携

ペアリング

事前に、PCとiPadをBluetoothでペアリングを行います

 

 

 

 

 

 

 

Bluetooth を有効( iPad / デスクトップPC / ノートPC )

  • iPadとノートPCをペアリング
  • iPadとデスクトップPCをペアリング( Bluetooth対応のUSBアダプタを利用 )

 

 

 

 

 

 

 

 

  1. ペアリングしたPCのブラウザでターゲットのWebサイトへアクセス
  2. Keycloakの認証画面へリダイレクト
  3. 端末の選択
  4. QRコードが表示
  5. QRコードをペアリング登録済のiPadのカメラでスキャン
  6. iPadでのPasskey認証(Touch ID)を行う
  7. iPadで認証後に、ペアリングしたPCのブラウザでターゲットのWebサイトへログイン

 

1-2. PCのブラウザでターゲットのWebサイトへアクセス / Keycloakの画面にリダイレクト

 

 

 

 

 

 

 

 

 

3.パスキー認証時のペアリングの端末を選択

例 今回は、iPad を選択

 

 

 

 

 

 

 

 

 

 

4.PC側にQRコードが表示される

 

 

 

 

 

 

 

 

 

 

5-6. QRコードをペアリングのiPadのカメラでスキャンして

サインインの記号  をクリック

 

 

 

 

 

 

 

 

 

7.iPad のTouch IDでの認証後に、PCブラウザでターゲットのWebへログイン

 

 

 

 

 

 

 

* Android Galaxy A23 も同様の操作手順となります

 

 

C. デバイスバウンドパスキー設定でアクセス認証

事前に「FIDO2対応のUSB指紋認証器」をPCに接続して、Windows Helloの機能を利用して、USB指紋認証器に「指紋を登録」しておきます

利用者はFIDO2対応のUSBタイプのセキュリティキー「指紋認証器」をPCへ接続

 

Windows hello を利用しての「指紋認証USB」にpinコードの設定と指紋を登録します

 

1. 最初に「指紋認証USB」にpin コードを設定

 

 

 

 

 

 

 

2. 次に指紋を登録(複数の指の登録可能)

 

 

 

 

 

 

 

ここまでで、事前のUSBへの指紋登録の設定は終了です

 

デバイスバウンドパスキーでアクセスのステップ

  1. USBの指紋認証器を接続した「PCのブラウザ」でターゲットのWebサイトへアクセス
  2. Keycloakの認証画面へリダイレクト
  3. 初回はユーザーの指紋認証のPublic KeyをKeycloakへ登録
  4. 指紋認証後にPCブラウザでターゲットのWebへログイン

 

1-2. USBの指紋認証器を接続した「PCのブラウザ」でターゲットのWebサイトへアクセス

 

 

3. 初回はユーザーの指紋認証のPublic KeyをKeycloakへ登録

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Keycloakへ登録のPublic Keyのラベル名を設定

例 WebAuthn Authenticator passkey-usb-finger

 

 

4. 指紋認証後にPCブラウザでターゲットのWebへログイン

 

 

Passkey認証導入の環境 / ハードウエア&ソフトウエアは対応済

ユーザー側のデバイスは、Passkeyによる顔認証・指紋認証に対応しています。またPCもBluetooth通信やUSB接続の指紋認証器を接続してPasskeyの利用ができます。

 

 

 

 

 

 

 

 

従来のパスワード認証は漏洩や不正アクセスなどのリスクが依然として存在し、より強固なセキュリティ対策が求められています。

 

こんな用途

  • Webサイトの認証を強化したい
  • Webサイトを生体認証にしたい
  • パスワードレス認証でWebへアクセスをさせたい

などでは、KeycloakとPasskey認証連携に対応のWebを導入することで、WebサイトへのPasskey認証を簡単に実現できます。

 

 

お問合せ

 

 

ご質問やご相談など