デスクネッツにスマフォの生体認証を利用
リモートワーク時に社内設置のグループウェア desknet’s NEOへのアクセスに際して、スマートフォンの生体認証に連携のPasskey認証を使い、リバースプロキシ経由で社内のデスクネッツへSSOでアクセスする構成です。
Passkey認証とは
FIDOアライアンスが推進するPasskey認証は、スマートフォンなどの指紋、顔認証(生体認証情報)を利用して、Webサイトにログインする方法です。
Passkey認証には以下のようなメリットがあります。
安全性: Passkey認証は生体認証情報に基づいているため、不正ログインやフィッシング詐欺などのリスクを大幅に低減できる
利便性: パスワード不要で、スマートフォンの生体認証機能で簡単にログインできる
汎用性: スマートフォン以外にもPCなどの様々なデバイスと連携して利用ができる
KeycloakとReverse Porxyの連携
idP として動作するKeycloakはWebAuthn機能によりPasskey認証をサポートしており、ReverseProxyと認証連携させることで、ReverseProxy先のサイトへのアクセスをスマートフォンの生体認証経由で簡単・安全に行うことが出来ます。
Passkey認証は従来のパスワードと異なり、漏洩や盗難の心配が少なく、より安全に各種サービスを利用できます。認証機能を持たないスマートフォン以外のパソコンなど、複数のデバイスからのPasskey認証でReverseProxy先のデスクネッツへのアクセスにも対応しています。
ReverseProxy経由で利用の場合、
- 代理認証機能により、デスクネッツへのシングルサインオン
での運用ができます。
クロスデバイス認証とは
クロスデバイス認証とは、スマートフォンのパスキー認証を利用して、認証機能を持たないPCなどの端末からターゲットのWebへ認証連携でアクセスさせる機能です。
Passkey認証 ✅ | クロスデバイス認証 ☑ | クロスデバイス認証 ☑ |
Bluetooth利用時のクロスデバイス認証の手順
- PC端末のブラウザでパスキー認証のリバースプロキシへ
- PC端末のブラウザにQRコードを表示
- QRコードをスマートフォンでスキャン
- スキャンしたQRコードをスマートフォンでパスキー認証
- Bluetooth通信によりスマートフォンとPC間で認証連携
- PC端末のブラウザでリバースプロキシ先のデスクネッツへ
同期パスキーとデバイスバウンドパスキー
FIDO2の拡張規格である 「Passkey 」認証 では秘密鍵の保存に関して
- デバイス間で同期できる同期パスキー( Synced passkeys )
- デバイスに依存して保存・利用するデバイスバウンドパスキー( Device bound passkeys )
の2種類のパスキーをサポートしています。
主な違い
項目 | 1. 同期パスキー |
2.デバイスバウンドパスキー
|
保存方法 | クラウドサービスを利用 | 特定のデバイス内に保存 |
利用方法 | 複数のデバイスで利用可能 |
1つのデバイスのみ利用可能
|
メリット | 紛失・故障時の復旧が容易 | より高い安全性 |
デメリット | セキュリティリスクがやや高い |
複数のデバイスで利用できない
|
機器構成とnetwork
必要な機器
- Keycloak / idP
- Passkey認証対応のリバースプロキシ( ユーザー情報の代理入力機能 )
- desknet’s
- スマートフォンやPC
- ブラウザ( プラグイン不要 )
同期パスキーを利用の場合
- iCloudキーチェーン
- Googleパスワードマネージャー
などのプラットフォーマーが提供するクラウドサービスと連携
同期パスキーの機器構成 例
A. 同期パスキー登録による、同期パスキーを登録した同じ機器での認証&リバースプロキシへのアクセス
➡ iPadでパスキー登録 ⇒ 同一のiPadで認証
➡ Android Galaxy A23でパスキー登録 ⇒ 同一のAndroid Galaxy A23で認証
パスキー認証 = ① Passkey認証端末 + ② ユーザー
B. 同期パスキー登録による、異なる機器でのクロスデバイス認証&リバースプロキシへのアクセス
➡ iPadでパスキー登録 ⇒ Note-PC / Desktop-PC で認証連携
➡ Android Galaxy A23 でパスキー登録 ⇒ Note-PC / Desktop-PC で認証連携
クロスデバイス認証 = ① PC端末 + ②Passkey認証端末 + ③ ユーザー
検証時のバージョンです(2024年6月)
* iOS 17.x 以降でクロスデバイス認証に対応
* Android 13 以降でクロスデバイス認証に対応
* Bluetooth 4.0以降でクロスデバイス認証に対応
デバイスバウンドパスキーの機器構成 例
C. デバイスバウンドパスキーによる認証&リバースプロキシへのアクセス
➡ USB指紋認証器でパスキー登録 ⇒ USB指紋認証器で認証
パスキー認証 = ① PC端末 + ②USB認証器 + ③ ユーザー
検証時のバージョンです(2024年6月)
* 指紋認証器としては、USB接続の「FIDO2対応の製品」が利用できます(Yubiko / 他)
Keycloakの運用
Keycloakを簡単に構築運用できる ➡「Powered BLUE for idP」を利用します
Keycloakアプライアンスの主な機能
- サーバーの設定(Network / Firewall )
- ウィザードによるKeycloakの構成(スタンドアロンやクラスター)
- Java設定
- DB設定
- Keycloak のバックアップ、リストア、アップグレード
- SSLサーバー証明書登録 ( トラストストア対応 )
- keycloak へのアクセスポート ( 80 / 443 )
- リバースプロキシ構成 ( 80 / 443 )
- アクティブモニタ(サービス監視・再起動・管理者への通知)
- ベースOS AlmaLinux 9.x / RockyLinux 9.x / RedHat 9.x に対応
Passkey認証に対応のReverseProxyの運用
Passkey認証連携のReverseProxyを簡単に構築運用できる ➡「Powered BLUE ReverseProxy」を利用します
主な機能
- Passkey認証対応リバースプロキシ
- 代理認証機能
- ベースOS AlmaLinux 9.x / RockyLinux 9.x / RedHat 9.x に対応
代理認証
Passkey認証対応のリバースプロキシから、既存のWebアプリへ「ID / パスワード」を代理入力&代理認証を行います 。
- ユーザー操作でのWebアプリへの「ID / パスワード」の入力不要
- 「ID / パスワード認証」のWebアプリをSSOのメンバーとして構成
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ブラウザでリバースプロキシへアクセス ( https://reverse-proxy.xyz.com )
- Keycloakへリダイレクト ( https://keycloak-passkey.xxx.com/……. )
- ID / Passwd の入力(Webauthn Passwordless Authenticatorの場合にはパスワード入力不要)
- 初回はユーザーのTouch IDのPublic Keyの登録
- Passkey認証(Touch ID)
- 認証後にターゲットのデスクネッツの表示 ( https://reverse-proxy.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 認証後にデスクネッツへログイン
* Android Galaxy A23 も同様の操作手順となります
B. クロスデバイス認証 / PCでのアクセス
クロスデバイス認証 = ① PC端末 + ②Passkey認証端末 + ③ ユーザー
ペアリング
事前に、PCとiPadをBluetoothでペアリングを行います
Bluetooth を有効( iPad / デスクトップPC / ノートPC )
- iPadとノートPCをペアリング(ノートPC内蔵のBluetoothを利用)
- iPadとデスクトップPCをペアリング( Bluetooth対応のUSBアダプタを利用 )
- ペアリングしたPCのブラウザでリバースプロキシへアクセス
- Keycloakの認証画面へリダイレクト
- 端末の選択
- QRコードが表示
- QRコードをペアリング登録済のiPadのカメラでスキャン
- iPadでのPasskey認証(Touch ID)を行う
- iPadで認証後に、ペアリングしたPCのブラウザでデスクネッツへ
1-2. PCのブラウザでターゲットのWebへアクセス / Keycloakの画面にリダイレクト
3.パスキー認証時のペアリングの端末を選択
例 今回は、iPad を選択
4.PC側にQRコードが表示される
5-6. QRコードをペアリングのiPadのカメラでスキャン
7.iPad のTouch IDでの認証後に、PCブラウザでターゲットのデスクネッツへログイン
* 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のブラウザ」でリバースプロキシへアクセス
- Keycloakの認証画面へリダイレクト
- 初回はユーザーの指紋認証のPublic KeyをKeycloakへ登録
- 指紋認証後にPCブラウザでリバースプロキシ先のデスクネッツへログイン
1-2. USBの指紋認証器を接続した「PCのブラウザ」でターゲットのリバースプロキシへアクセス
3. 初回はユーザーの指紋認証のPublic KeyをKeycloakへ登録
Keycloakへ登録のPublic Keyのラベル名を設定
例 WebAuthn Authenticator passkey-usb-finger
4. 指紋認証後にPCブラウザでデスクネッツへログイン
- Passkey認証対応のリバースプロキシへアクセス
- 初回のみ Keycloakへアクセス
- Passkey認証後にリバースプロキシからdesknet’sへユーザー情報を代理入力
- desknet’sへ自動ログイン
既存の認証方法とPasskey認証の併用
アクセス元によりデスクネッツへの認証方法を変えることも出来ます。
- 従来の ID / パスワード認証(社内からのアクセス)
- Passkey認証のSSOでのアクセス(社外からのアクセス)
の併用など柔軟な運用が可能です。
ID / パスワード認証 | Passkey認証 |
Passkey認証導入の環境
ユーザー側のデバイスは、Passkeyによる顔認証・指紋認証に対応しています。またPCもBluetooth通信やUSB接続の指紋認証器を接続してPasskeyの利用ができる環境は整っています。
こんな場合に
- 社内のWebサイトへセキュアにアクセスしたい
- 既存のWebサイトの改修はできない
- VPNは使いたくない
などでは、Passkey認証のKeycloakに連携のリバースプロキシ導入することで、スマートフォンの生体認証を利用しながら、安全に社内Webへのアクセスを実現できます。
お問合せ