「WebAuthn」カテゴリーアーカイブ

KeycloakでPasskeyによる生体認証を導入する方法と構成(パスワードレス認証)

パスキーを利用

Keycloakは、WebAuthnに対応したPasskeyをサポートしています。Passkeyは、生体認証だけでなく、セキュリティキーも利用可能な認証方式です。この機能を活かし、指紋認証、顔認証、虹彩認証などの生体認証に加え、USBやNFC型のセキュリティキーを用いた認証もKeycloakと連携することができます。

スマートフォン以外にも、パソコンやタブレット端末でもセキュリティキーによる認証やBluetoothなどによる認証連携が可能です。 普段利用しているスマートフォンの生体認証機能やセキュリティキーをそのまま、Keycloakの認証に利用することができます。生体認証・セキュリティキー認証を利用することで、パスワード管理の手間を省き、不正ログインのリスクを低減をさせるパスワードレス認証での運用が可能です。

 

 

 

 

 

 

 

パスキー認証のメリット

Passkey認証は、パスワードに代わる標準の認証方法です。Webサイトやアプリへのログイン認証にスマートフォンなどの生体認証情報(指紋、顔認証、虹彩認証など)を利用することが出来ます。

従来のパスワード認証と比べて、Passkey認証には以下のような利点があります。

1.高い安全性

  • パスワード漏洩のリスクを排除: Passkey認証は生体認証情報に基づいているため、パスワード漏洩による不正ログインを防止
  • フィッシング詐欺対策: フィッシングサイトで偽の入力画面にパスワードを入力しても、Passkey認証では生体認証が必要となるため、被害を防止

2.抜群の利便性

  • パスワード記憶不要: 面倒なパスワードを覚える必要がなく、スマートフォンの生体認証機能で簡単にログイン
  • シームレスなログイン体験: ワンタップでログインできるため、スムーズかつストレスフリーな認証を実現
  • マルチデバイス対応: スマートフォンだけでなく、パソコンやタブレット端末など、様々なデバイスで利用可能

3.高度なセキュリティ対策

  • 不正アクセス防止: 本人認証を厳格に行うため、不正アクセスを防止
  • なりすまし防止: 生体認証情報に基づいているため、他人に成りすましてログインが困難

 

 

 

 

 

同期パスキーとデバイスバウンドパスキーの2種類

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

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

Passkey 認証

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

 

 

 

 

 

 

 

 

主な相違点

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

 

クロスデバイス認証とは

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

生体認証機能 ✅ 生体認証機能 ☒ 生体認証機能 ☒

 

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

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

 

 

 

 

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

機器構成

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

 

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

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

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

 

 

 

 

 

 

 

 

 

同期パスキーの機器構成  例

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

 

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

Passkey認証Webへのアクセス検証時のバージョンです(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以降でクロスデバイス認証に対応

 

 

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

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

Passkey認証Webへのアクセス検証時のバージョンです(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 / 他)

 

 

 

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本体でのアクセス認証

アクセス認証 = ① Passkey認証端末 + ② ユーザー

  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 + ② Passkey認証端末 + ③ユーザー

 

ペアリング

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

 

 

 

 

 

 

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

  • iPadとノートPCをペアリング(ノートPC内蔵のBluetoothを利用)
  • 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. デバイスバウンドパスキー設定でアクセス認証

アクセス認証 = ① PC + ② USB認証器 + ③ユーザー

事前に「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認証を簡単に実現できます。

 

 

お問合せ