~ 代理認証のリバースプロキシで実現するKeycloakのSSO基盤の運用例 ~
Keycloak はRedHatによって開発された、1度の認証で複数のシステムを利用可能にするシングルサインオンの仕組みを実現できるオープンソースのアプリケーションです。
Keycloakと各種のアプリと連携してSSOを構成することができます。
運用環境
Keycloakは
- OS:Linux、Windows、macOS
- Java:Java (Quarkus)
- データベース:MySQL、PostgreSQL、Oracle
などの環境で動作します。
Quarkus対応
従来のWildflyからQuarkusへの変更により
- 起動時間の大幅な短縮
- 使用するリソースの縮小
が図られています(WildFlyは非推奨もしくは廃止予定です)
動作
動作させるだけであれば、OSにKeycloakをインストール・起動することで利用は可能です。
GUIアクセスのデフォルトのポートは
- LAN http ( 80 / 8080 )
- WAN https ( 8443 )
などになります。
実際
実際の運用に際しては
- セキュリティ
- 冗長構成
- バックアップ
- サービスの監視
- 管理者の負担
- SAMLやOIDCに未対応のWebアプリへのSSO対応
などを考慮する必要があります。
簡単セットアップ
Quarkus対応版のKeycloakを簡単にセットアップできて、管理者に負担をかけずにシングルサインオンの基盤を自社運用できるキットがKeycloakのアプライアンスです。
Keycloakへのアクセスは標準でSSLの「https / 443番」ポートに対応しています。
例 https : // idp . keycloak . com /
DB設定やクラスター構成をはじめ、閉域網などでの運用にも対応しています。
Keycloakアプライアンス
セキュリティや管理者の負担などを考慮したKeycloakのアプライアンスとして
➡ 「Powered BLUE idP for Keycloak」
の利用が可能です。
セットアップ
- GUIからKeycloakやサーバー設定に対応
- サーバーの設定(Network / Firewall / SELinux )
- ウィザードによるKeycloakの構成や設定(スタンドアロンやクラスター)
- DB 設定や構成 ( 内蔵もしくは外部サーバーのどちらの構成にも対応 )
- Keycloak のバックアップ、リストア、バージョンアップ
- keycloak へのアクセスポート( 80 / 443 )
- リバースプロキシとKeycloak 連携機能(1台での運用に対応)
- SSLクライアント認証
- SSLサーバー証明書の登録
- アクティブモニタ(サービス監視・再起動・管理者への通知)
- パッチの自動適用
コマンドラインからのプログラムのインストールや設定は不要
① リバースプロキシ構成(有・無)
ダイレクトアクセス・モード Client ⇒ ( 443 / Keycloak )
- Keycloakを直接443番ポートで運用します
リバースプロキシ・モード Client ⇒ ( 443 / リバースプロキシ ⇒ 8080 / Keycloak ) 1台で構成
- リバースプロキシ経由でKeycloakへアクセスする運用です
② パス設定 (Quarkusでも任意のパスを指定できます)
https:// idp.keycloak.com / auth /
③ http・https ポート設定
443 / 8080 / 80 /etc
スタンドアローンやクラスター構成 DBセットアップ
- データベース構成
- スタンドアローンやクラスター構成
- クラスター構成
SSLサーバー証明書の登録
- 自己証明書やパブリックなSSLサーバー証明書の登録も簡単
keycloak バージョン管理
例 ver 18.0.1 から19.0.1 へアップグレード
keycloak バックアップ
- バックアップやリストア機能
クローズドネットワークでの運用
仮想アプライアンスのイメージでの提供により
- 仮想サーバーのイメージインポートやオンプレミスでの運用に対応
サーバーの自己監視機能や自動再起動機能により
- 外部の監視サービスを利用しない運用に対応
アプライアンスの運用環境
オンプレやクラウド環境、仮想基盤など自社管理での運用に対応
- VMware / Hyper-V
- AWS / Azure / FUJITSU Hybrid IT Service FJcloud-O (富士通) / WebARENA / VPSなど
keycloakのSSO対応
KeycloakでSSOを構成する方法
方式 | アプリの改修 |
1.フェデレーション | 不要 |
2.クライアントアダプター | 必要 |
3.代理認証対応リバースプロキシ | 不要 |
SSO対応の3方式
1.フェデレーション / アプリの改修は不要
SAMLやOIDC認証に対応のWebアプリケーションに適用
- KeycloakをidP / WebアプリケーションをSPとして連携することでSSOを構成
- SAMLやOIDC認証に対応しているSaaSは、簡単にSSOを構成できます
SAMLやOIDC認証に対応していないWebアプリケーションに適用
すべてのアプリケーションがSSOに対応しているわけではありません。従来から運用のレガシーWebアプリは、SAMLやOIDC認証などのSSOに対応していないケースがほとんどです。
そのような場合の選択枝としては、以下の2つの方法が候補となります。
2.クライアントアダプター Webの改修で対応
- 既存WebにKeycloakのクライアントアダプターを組み込んでSAMLやOIDCに対応
- Webの改修が必要
3.リバースプロキシを利用 Webは未改修で対応
- リバースプロキシを経由して、既存のWebへアクセスさせる
- Webの改修は不要です
既存のWebアプリケーションを改修することなく、Keycloak 連携のシングルサインオンで運用する方法として、SAMLやOIDC認証に対応の「代理認証のリバースプロキシ」を活用したSSO化が有効です。
代理認証のリバースプロキシを利用 / Webの改修不要でSSOを実現
SAMLやOIDC認証対応の代理入力機能を持つリバースプロキシは、Webアプリケーションの前に配置された中継サーバーです。
ユーザーがリバースプロキシにアクセスすると、Keycloak / idPがユーザーの認証を行い、認証に成功するとリバースプロキシがWebアプリケーションにユーザー情報「ID / パスワード」を代理入力します。
これにより、Webアプリケーションを改修することなく、SSOに対応させることができます。
特徴
- ユーザーは、Webアプリの 「ID / パスワード」 の入力不要
- ユーザーには、Webアプリの「ID / パスワード」の公開は不要
- 既存で運用のWebアプリを改修をすることなく、SSOを実現
idP連携のリバースプロキシからWebへ代理認証でのSSO
Keycloak / idP と リバースプロキシはSAMLやOIDCで認証を行います。
「Webシステム」は WAN / DMZ / LAN の任意の場所の設置に対応しています
代理認証のSSOに必要な機器
- idP / Keycloak
- SAML / OIDC認証のリバースプロキシ( ユーザー情報の代理入力機能 )
- 既存のWeb( 変更不要 )
- ブラウザ( プラグイン不要 )
idP
Keycloakの他、SAML / OIDC認証をサポートの 一般的なidP にも対応
- Microsoft Entra ID ( 旧名称 Azure AD )
- GMOトラストログイン
- 他
idPとリバースプロキシはSAML認証やOIDC認証で接続
代理認証対応のリバースプロキシ
idP連携のSAMLやOIDC認証の代理認証対応のID認識型リバースプロキシ
➡ 「Powered BLUE Reverse-Proxy with SSO 」
を利用します。
主な機能
- リバースプロキシ機能
- SAMLやOIDC認証(SP / RP 機能 *1 )
- バックエンドのWebへユーザー情報の代理入力機能
- バックエンドのWebへHTTPヘッダーでのユーザー情報の転送機能
- SSLクライアント認証
- ログの取得
- GUIから設定や運用 *2
- SSLクライアント認証
- SSLサーバー証明書の登録
- アクティブモニタ(サービス監視・再起動・管理者への通知)
- パッチの自動適用
を有しており、任意の場所で自社管理でオールインワンでの運用を行うことが出来ます。
*1 SAML認証時はSP (Service Provider) OIDC認証時はRP(Relying Party)という名称
*2 コマンドラインからのプログラムのインストールや設定は不要
GUI設定
- SSO設定( SAML認証の例 )
代理認証でのSSOの手順
- SAML / OIDC認証対応のID認識型リバースプロキシへアクセス
- 初回のみ idP へアクセス
- idP の認証後にリバースプロキシからWebへアカウント情報を代理入力
- バックエンドのWebへ自動ログイン
各種WebシステムへSSO
一度のKeycloak / idP認証で、複数のWebシステムへSSOでアクセスできます
Keycloakの多要素認証(MFA)
Private-CAのアプライアンスとして
を利用出来ます。
- Private-CA(SSLクライアント証明書の発行・失効)
- CRLを公開
- SSLクライアント認証
SSLクライアント認証でidPやリバースプロキシへの認証を強化
- SSLクライアント認証
- ID / Passwd認証
クライアント証明書 〇 | クライアント証明書 ✕ |
Keycloakではワンタイムパスワード認証も利用が出来ます。
- ワンタイムパスワード認証は、毎回「入力する」必要があります
- SSLクライアント認証は、SSLクライアント証明書を一度インストールすると操作は不要です
多要素認証の比較
認証 | SSLクライアント認証 | ワンタイムパスワード認証 |
認証操作 | 不要 | 毎回必要 |
判定のタイミング | ID / passwd 入力前に判定 | ID / passwd 入力後に判定 |
リスト攻撃 | ブロック 〇 | ブロック ✖ |
KeycloakとActive Directory連携でのSSO
Active DirectoryとKeycloakを連携
- keycloakとActive Directoryの連携
- Keycloakとリバースプロキシは、SAML / OIDC認証
- リバースプロキシとWebは代理認証
既存の認証方法とSSOの併用
アクセス元により認証方法を変えることも出来ます。
- 従来の ID / パスワード認証(社内からのアクセス)
- idP / IDaaS 連携によるSSO(社外からのアクセス)
の併用などの柔軟な運用が可能です。
ID / パスワード認証 | SSO |
代理認証対応のリバースプロキシ導入のポイント
- SAMLやOIDC認証に未対応のWebをSSO化できる
- Webの改修不要
- WebのOS不問
- ユーザーからWebアプリへの ID / パスワード の入力操作は不要
- ユーザーへのWebアプリの ID / パスワードの公開は不要
- 一般的なブラウザで利用できる(プラグイン不要)
- 多要素認証に対応できる
Keycloakやリバースプロキシ・アプライアンスの構成
アプライアンスのGUIや操作・設定・運用方法は共通
- OS RockyLinux / RedHat
- 各種のアプリ
- GUIでのサーバーやアプリの設定
管理者の負担軽減での運用
- サーバーの自己監視やサービスの自動再起動機能
- パッチのスケジュールアップデート機能
- 管理者への通知機能
Keycloakやリバースプロキシの運用先
オンプレミスやクラウド環境、仮想基盤など自社管理での運用に対応
- VMware / Hyper-V
- AWS / Azure / FUJITSU Hybrid IT Service FJcloud-O (富士通) / WebARENA / ALTUS / VPSなど
お問合せ