オープンソースのWebメールシステムのRoundcube(WebMail)をKeycloakを利用してPasskey認証で運用する構成です。ID/Passwd認証のような第三者によるなりすましを防ぎ、スマートフォン標準の指紋認証(Touch ID)や顔認証(Face ID)の操作を行うことで、ターゲットのRoundcubeへPasskeyを利用した生体認証によるSSOでアクセスを行います。
さらに認証機能を持たないデスクトップPCやノートPCなども、クロスデバイス認証によりスマートフォンと認証連携することで、デスクトップPCやノートPCからもPasskey認証でRoundcubeへSSOを行うことが可能です。
パスキー認証とは
Passkey認証は、パスワードに代わる新しい認証方法です。スマートフォンなどの生体認証情報(指紋、顔認証、虹彩認証など)を利用して、ウェブサイトにログインする方法です。
従来のパスワード認証と比べて、Passkey認証には以下のような利点があります。
- 安全性が高い: パスワードは推測や漏洩のリスクがありますが、Passkey認証は生体認証情報に基づいているため、より安全です。
- 利便性が高い: パスワードを覚える必要がなく、スマートフォンの生体認証機能で簡単にログインできます。
- 汎用性が高い: スマートフォン以外のPCなどの様々なデバイスと連携して利用ができます。
クロスデバイス認証とは
クロスデバイス認証とは、スマートフォンのパスキー認証を利用して、認証機能を持たないPCなどのデバイスからターゲットのWebへアクセスさせる機能です。
Passkey認証 ✅ | クロスデバイス認証 ☑ | クロスデバイス認証 ☑ |
Bluetooth利用時のクロスデバイス認証のフロー
- PC端末でパスキー認証のターゲットのRoundcubeへブラウザでアクセス
- PC端末側のブラウザにQRコードを表示
- QRコードをスマートフォンでスキャン
- スキャンしたQRコードをスマートフォンでパスキー認証
- Bluetooth通信によりスマートフォンとPC間で認証連携
- PCのブラウザでターゲットのRoundcubeへシングルサインオン
同期パスキーとデバイスバウンドパスキー
FIDO2の拡張規格である 「Passkey 」認証 では、秘密鍵の保存に関して
- デバイス間で同期できる同期パスキー( Synced passkeys )
- デバイスに依存して保存・利用するデバイスバウンドパスキー( Device bound passkeys )
の2種類をサポートしています。
相違点
項目 | 1. 同期パスキー |
2.デバイスバウンドパスキー
|
保存方法 | クラウドサービスを利用 | 特定のデバイス内に保存 |
利用方法 | 複数のデバイスで利用可能 |
1つのデバイスのみ利用可能
|
メリット | 紛失・故障時の復旧が容易 | より高い安全性 |
デメリット | セキュリティリスクがやや高い |
複数のデバイスで利用できない
|
パスキー対応ネットワーク構成
機器構成
- Webサーバー(Roundcubeを運用)
- Keycloakサーバー(idP)
- クライアントの機器( スマートフォンやPC端末 )
- ブラウザ( プラグイン不要 )
同期パスキーを利用の場合
- iCloudキーチェーン
- 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 / Rioundcubeの運用
Passkey認証連携の Web / Roundcube / WordPress を簡単に構築運用できる ➡「Powered BLUE Web for Passkey」を利用します
主な機能
- Web / Mai l / DNS / ftp (インターネットサーバー機能)
- 送信ドメイン認証 (DKIM / DMARC / SPF)
- ベースOS AlmaLinux 9.x / RockyLinux 9.x / RedHat 9.x に対応
Passkey認証連携の Web / Roundcube / WordPress を構築&運用できます
PCでの表示 | スマートフォンでの表示 |
Roundcube 同期パスキーの機器構成 例
A. 同期パスキー登録による、同期パスキーを登録した同じ機器での認証&Roundcubeへのアクセス
➡ iPadでパスキー登録 ⇒ 同一のiPadで認証
➡ Android Galaxy A23でパスキー登録 ⇒ 同一のAndroid Galaxy A23で認証
パスキー認証 = ① Passkey認証端末 + ② ユーザー
B. 同期パスキー登録による、異なる機器でのクロスデバイス認証&Roundcubeへのアクセス
➡ iPadでパスキー登録 ⇒ Note-PC / Desktop-PC で認証連携
➡ Android Galaxy A23 でパスキー登録 ⇒ Note-PC / Desktop-PC で認証連携
クロスデバイス認証 = ① PC端末 + ②Passkey認証端末 + ③ ユーザー
Roundcube検証時のバージョンです(2024年6月)
* iOS 17.x 以降でクロスデバイス認証に対応
* Android 13 以降でクロスデバイス認証に対応
* Bluetooth 4.0以降でクロスデバイス認証に対応
Roundcube デバイスバウンドパスキーの機器構成 例
C. デバイスバウンドパスキーによる認証&Roundcubeへのアクセス
➡ USB指紋認証器でパスキー登録 ⇒ USB指紋認証器で認証
パスキー認証 = ① PC端末 + ②USB認証器 + ③ ユーザー
Roundcube検証時のバージョンです(2024年6月)
* 指紋認証器としては、USB接続の「FIDO2対応の製品」が利用できます(Yubiko / 他)
Keycloakの設定手順
- レルムの作成
- Webとの連携設定
- ロールの作成
- ユーザーの作成
- ロールのアサイン
- 認証フローの作成(Webauthn Passwordless もしくはWebauthn ポリシーの設定)
- Bind flow
- 認証ポリシーの設定
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認証に際しては、以下のいずれかを利用して
- Webauthn Passwordless Authenticator
- Webauthn Authenticator
ポリシーを設定して 例「passkey-demo-flow」という名称で保存します
今回は、Webauthn Authenticator を利用して設定します
( 認証フローの作成 / 画面のクリックで拡大)
7.Bind flow
作成した「passkey-demo-flow」ポリシーを、「Browser flow」へバインドします。今回作成の「passkey-demo-flow」がブラウザでのログインに適用されます。
8.認証ポリシーの設定
- Webauthn Passwordless Authenticator
- Webauthn Authenticator
の認証のポリシー(詳細)を設定します
今回は、Webauthn Authenticator を設定します
( 認証ポリシーの設定 / 画面のクリックで拡大)
ポリシー項目としては、今回は以下のような設定
項目 | 設定値 | 内容 |
リーディング・パーティエンテイティ | URL | KeycloakのURL 例 https://keycloak-passkey.xxx.com/ |
署名アルゴリズム | E256 | 認証に使用する署名アルゴリズム |
期待する構成証明伝達 | Not Specified | |
オーセンティケーター・アタッチメント | Not Specified | |
常駐鍵が必要 | Not Specified | |
ユーザー検証要件 | Requried | |
タイムアウト | 設定なし | |
許容可能なAAGUID | 指定なし | |
エクストラオリジンズ | 指定なし |
A. 同期パスキー設定 / 登録したiPad本体でのアクセス認証
パスキー認証 = ① Passkey認証端末 + ② ユーザー
- iPadのsafariブラウザでターゲットのRoundcubeへアクセス ( https://target-web.xyz.com )
- Keycloakへリダイレクト ( https://keycloak-passkey.xxx.com/……. )
- ID / Passwd の入力(Webauthn Passwordless Authenticatorの場合にはパスワード入力不要)
- 初回はユーザーのTouch IDのPublic Keyの登録
- Passkey認証(Touch ID)
- 認証後にターゲットのRoundcubeへシングルサインオン ( 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 認証後にRoundcube へシングルサインオン
* Android Galaxy A23 も同様の操作手順となります
B. クロスデバイス認証 / PCでのアクセス認証連携
クロスデバイス認証 = ① PC端末 + ②Passkey認証端末 + ③ ユーザー
ペアリング
事前に、PCとiPadをBluetoothでペアリングを行います
Bluetooth を有効( iPad / デスクトップPC / ノートPC )
- iPadとノートPCをペアリング( ノートPC内蔵のBluetoothを利用 )
- iPadとデスクトップPCをペアリング( Bluetooth対応のUSBアダプタを利用 )
- ペアリングしたPCのブラウザでターゲットのRoundcubeへアクセス
- Keycloakの認証画面へリダイレクト
- 端末の選択
- QRコードが表示
- QRコードをペアリング登録済のiPadのカメラでスキャン
- iPadでのPasskey認証(Touch ID)を行う
- iPadで認証後に、ペアリングしたPCのブラウザでターゲットのRoundcubeへSSO
1-2. PCのブラウザでターゲットのRoundcubeへアクセス / Keycloakの画面にリダイレクト
3.パスキー認証時のペアリングの端末を選択
例 今回は、iPad を選択
4.PC側にQRコードが表示される
5-6. QRコードをペアリングのiPadのカメラでスキャンして
7.iPad のTouch IDでの認証後に、PCブラウザでターゲットのRoundcubeへSSO
* Android Galaxy A23 も同様の操作手順となります
C. デバイスバウンドパスキー設定でアクセス認証
パスキー認証 = ① PC端末 + ②USB認証器 + ③ ユーザー
事前に「FIDO2対応のUSB指紋認証器」をPCに接続して、Windows Helloの機能を利用して、USB指紋認証器に「指紋を登録」しておきます
利用者はFIDO2対応のUSBタイプのセキュリティキー「指紋認証器」をPCへ接続
Windows hello を利用しての「指紋認証USB」にpinコードの設定と指紋を登録します
1. 最初に「指紋認証USB」にpin コードを設定
2. 次に指紋を登録(複数の指の登録可能)
ここまでで、事前のUSBへの指紋登録の設定は終了です
デバイスバウンドパスキーでアクセスのステップ
- USBの指紋認証器を接続した「PCのブラウザ」でターゲットのWebサイトへアクセス
- Keycloakの認証画面へリダイレクト
- 初回はユーザーの指紋認証のPublic KeyをKeycloakへ登録
- 指紋認証後にPCブラウザでターゲットのWebへログイン
1-2. USBの指紋認証器を接続した「PCのブラウザ」でターゲットのWebサイトへアクセス
3. 初回はユーザーの指紋認証のPublic KeyをKeycloakへ登録
Keycloakへ登録のPublic Keyのラベル名を設定
例 WebAuthn Authenticator passkey-usb-finger
4. 指紋認証後にPCブラウザでターゲットのRoundcubeへSSO
SSOでのPasskey認証ステップ
- Roundcubeへアクセス
- 初回のみ idP / Keycloak へアクセス
- Keycloak のPasskey認証後にRoundcubeへログイン
各種WebへのSSO
一度のidP / KeycloakのPasskey認証で、複数のWebへシングルサインオン
Passkey認証導入の環境 / ハードウエア&ソフトウエアは対応済
ユーザー側のデバイスは、Passkeyによる顔認証・指紋認証に対応しています。またPCもBluetooth通信やUSB接続の指紋認証器を接続してPasskeyの利用ができます。
こんな用途
- Webサイトの認証を強化したい
- Webサイトを生体認証にしたい
- パスワードレス認証でWebへアクセスをさせたい
- シングルサインオンで利用したい
などでは、KeycloakとPasskey認証連携に対応のWebを導入することで、WebサイトへのPasskey認証を実現できます。