パスキーを利用
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 認証
- 同期パスキー( Synced passkeys )
- デバイスバウンドパスキー( Device bound passkeys )
主な相違点
項目 | 1. 同期パスキー |
2.デバイスバウンドパスキー
|
保存方法 | クラウドサービスを利用 | 特定のデバイス内に保存 |
利用方法 | 複数のデバイスで利用可能 |
1つのデバイスのみ利用可能
|
メリット | 紛失・故障時の復旧が容易 | より高い安全性 |
デメリット | セキュリティリスクがやや高い |
複数のデバイスで利用できない
|
クロスデバイス認証とは
クロスデバイス認証とは、認証機能のあるスマートフォンのパスキー認証を利用して、認証機能を持たないPCなどのデバイスからターゲットのWebへアクセスさせる機能です。
生体認証機能 ✅ | 生体認証機能 ☒ | 生体認証機能 ☒ |
Bluetooth利用時のクロスデバイス認証のフロー
- PC端末でパスキー認証のターゲットのWebへブラウザでアクセス
- PC端末側のブラウザにQRコードを表示
- QRコードをスマートフォンでスキャン
- スキャンしたQRコードをスマートフォンでパスキー認証
- Bluetooth通信によりスマートフォンとPC間で認証連携
- PCのブラウザでターゲットのWebへログイン
パスキー対応ネットワーク構成
機器構成
- Webサーバー
- Keycloakサーバー
- クライアントの機器( スマートフォンやPC端末 )
- ブラウザ( プラグイン不要 )
同期パスキーを利用の場合には
- iCloudキーチェーン
- 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月)
* iOS 17.x 以降でクロスデバイス認証に対応
* Android 13 以降でクロスデバイス認証に対応
* Bluetooth 4.0以降でクロスデバイス認証に対応
デバイスバウンドパスキーの機器構成 例
C. デバイスバウンドパスキーによる認証&Webへのアクセス
➡ USB指紋認証器でパスキー登録 ⇒ USB指紋認証器で認証
Passkey認証Webへのアクセス検証時のバージョンです(2024年6月)
* 指紋認証器としては、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の設定手順
- レルムの作成
- 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ブラウザでターゲットのWebへアクセス ( https://target-web.xyz.com )
- Keycloakへリダイレクト ( https://keycloak-passkey.xxx.com/……. )
- ID / Passwd の入力(Webauthn Passwordless Authenticatorの場合にはパスワード入力不要)
- 初回はユーザーのTouch IDのPublic Keyの登録
- Passkey認証(Touch ID)
- 認証後にターゲットの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アダプタを利用 )
- ペアリングしたPCのブラウザでターゲットのWebへアクセス
- Keycloakの認証画面へリダイレクト
- 端末の選択
- QRコードが表示
- QRコードをペアリング登録済のiPadのカメラでスキャン
- iPadでのPasskey認証(Touch ID)を行う
- 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への指紋登録の設定は終了です
デバイスバウンドパスキーでアクセスのステップ
- 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ブラウザでターゲットのWebへ
Passkey認証導入の環境 / ハードウエア&ソフトウエアは対応済
ユーザー側のデバイスは、Passkeyによる顔認証・指紋認証に対応しています。またPCもBluetooth通信やUSB接続の指紋認証器を接続してPasskeyの利用ができます。
従来のパスワード認証は漏洩や不正アクセスなどのリスクが依然として存在し、より強固なセキュリティ対策が求められています。
こんな用途
- Webサイトの認証を強化したい
- Webサイトを生体認証にしたい
- パスワードレス認証でWebサイトへアクセスをさせたい
などでは、KeycloakとPasskey認証連携に対応のWebを導入することで、WebサイトへのPasskey認証を簡単に実現できます。