Keycloakとは、シングルサインオン(SSO; Single Sign On)を実現するためにRed Hat社が開発したJavaベースのオープンソースソフトウェアです。Keycloakは、アプリケーションやサービスとの連携してSAML、OpenID Connectに対応した認証・認可をはじめ、Active directory連携や多要素認証などの機能を有しています。
【KeycloakでのSSO】
シングルサインオンとは、ユーザーが複数のアプリケーションにログインする際に、1度だけ認証を行うことで、すべてのアプリケーションにアクセスできます。SSOを利用することで、ユーザーはパスワードを記憶する必要がありません。
SAMLやOIDC認証に対応のWebアプリケーションの場合には、簡単にKeycloakとSSOの構成を組むことができます。
ただし、すべてのWebアプリケーションがSSOに対応しているわけではありません。従来から運用のWebアプリは、SSOに対応していないケースがほとんどです。
SAML / OIDC認証に未対応のWeb |
既存の「SAML / OIDC認証に未対応のWebアプリ」を Keycloakと連携してシングルサインオンで運用する場合には、リバースプロキシを利用してSSOに対応させる方法をとることができます。
Keycloakは代理認証方式などの機能を有していませんが、SAML/ OIDC認証に対応の代理認証やHTTPヘッダー方式のリバースプロキシを利用することで、Keycloakと連携して既存のWebサービスへのSSOが構成できます。
【こんな場合に】
- ID / パスワードの漏洩が心配
- Webの改修不要でSSOを導入したい
- 社内のWebをSSOに対応させたい
- 自社のWebサービスをSSOによりSaaS化したい
- サードパーティのWebアプリをSSOで運用したい
- 共有アカウントでログインさせたいWebアプリがある
- Webサービスへ多要素認証を適用したい
- ユーザーにはブラウザのみで利用させたい
- Keycloakで代理認証を構成したい
- OSSのKeycloakでidPの費用を抑えたい
- VPNは負荷が高いので使用を控えたい
【リバースプロキシの特徴】
- アクセス先のWebサーバーのOSは問わない
- アクセス先のWebサーバーを隠蔽
- ブラウザのみでアクセスできる(プラグイン不要)
【SSO対応のリバースプロキシ】
SAMLやOIDC認証に未対応のWebアプリに対しては、Keycloakと連携のリバースプロキシ 「Powered BLUE Reverse-Proxy with SSO 」を利用することで、ターゲットWebアプリへユーザー情報を渡してSSOで運用することが出来ます。
【 SAML / OIDC認証に対応のリバースプロキシ】
Keycloak連携のSAML / OIDC認証対応のID認識型リバースプロキシ
「Powered BLUE Reverse-Proxy with SSO 」
では、2種類のssoの方式をサポートしています。
SSO の 方式 | 内 容 | 備 考 |
代理認証方式 | idPからのユーザー属性を元に ユーザー ID / Passwdをリバースプロキシから ターゲットWebへ代理入力を行う |
Webの改修不要 |
HTTPヘッダ方式 | idPからのユーザー属性をHTTPヘッダを介して ターゲットWebへ渡す |
Webの改修必要 |
【Keycloak連携のリバースプロキシから代理認証でのSSO】
ID / パスワード認証の「既存のWebアプリ」を
- SAMLやOIDC認証のシングルサインオンのメンバーとして構成
- バックエンドの「Webアプリ」は 改修不要 *1
- バックエンドの「Webアプリ」は LAN / WAN / DMZ の任意の場所に設置
に対応で運用する構成です。
*1 サードパーティ製の「Webアプリ」もWebの改修不要でSSO対応できます
【代理認証】
SAML/OIDC認証対応のID認識型リバースプロキシから、既存のWebアプリへ「ID / パスワード」を代理入力&代理認証を行います *2
- ユーザー操作でのWebアプリへの「ID / パスワード」の入力不要
- 「ID / パスワード認証」のWebアプリをSSOのメンバーとして構成
*2 SP機能のリバースプロキシと代理入力のリバースプロキシを分離して多段構成での運用にも対応
【Keycloakで代理認証のSSOに必要な機器構成】
- Keycloak / idP
- SAML / OIDC認証機能のID認識型リバースプロキシ( ユーザー情報の代理入力機能 )
- 既存のWebアプリ ( Webの改修不要 / エージェント不要)
- ブラウザ(プラグイン不要)
【idP / Keycloak】
KeycloakはSAMLやOIDC認証でリバースプロキシと接続します。
Keycloakのアプラアインス 「Powered BLUE for idP 」も利用できます
Keycloakアプライアンスの機能
- ウィザードによるKeycloakのセットアップ
- Keycloak のバックアップ、リストア、アップグレード
- SSLサーバー証明書登録 ( トラストストア対応 )
- keycloak へのアクセスポート( 80 / 443 )
- アクティブモニタ(サービス監視・再起動・管理者への通知)
- SSLクライアント認証
- GUIからの操作設定
【 SAML/OIDC認証 リバースプロキシ・アプライアンス 】
SAML / OIDC認証に対応のID認識型リバースプロキシ・アプライアンス
「Powered BLUE ReverseProxy for SSO / IDaaS」
で構築運用します。
- リバースプロキシ機能
- SAMLやOIDC認証(SP / RP 機能 *1 )
- Webアプリへユーザー情報の代理入力機能
- WebアプリへHTTPヘッダーでのユーザー情報の転送機能
- SSLクライアント認証
- GUIから設定や運用
*1 SAML認証時はSP (Service Provider) OIDC認証時はRP(Relying Party)という名称です
【Keycloakと代理認証でのSSO手順】
- SAML / OIDC認証対応のID認識型リバースプロキシへアクセス
- 初回のみ Keycloak へアクセス(シングルサインオン)
- idP の認証後にリバースプロキシからバックエンドのWebへユーザー情報を代理入力
- バックエンドのWebへ自動ログイン
【各種Web システムへのSSO】
一度の Keyclaok / idP 認証で、複数のWebシステムへSSOでアクセスできます
【KeycloakとActive Directory連携でのSSO】
Active DirectoryとKeycloakを連携
- keycloakとActive Directoryの連携
- Keycloakとリバースプロキシは、SAML / OIDC認証
- リバースプロキシとWebは代理認証
【SSLクライアント認証の併用(多要素認証 / MFA)】
SSLクライアント認証で Keycloak / idP やリバースプロキシへの認証を強化
- keycloakとのSAML / OIDC認証
- SSLクライアント認証
クライアント証明書 〇 | クライアント証明書 ✕ |
【 HTTPヘッダー方式でのSSO 】
「ID / パスワード」はリバースプロキシ側から投入したくない場合には、ヘッダーに記載のユーザー情報を元にWebサイト側で独自にログインをさせることが出来ます。
【Keycloak連携のリバースプロキシからHTTPヘッダ方式でのSSO】
Keycloak / idPからのユーザー情報をHTTPヘッダに乗せるSSOの場合、Webアプリ側ではヘッダーへ記載のユーザー情報からWebへのログインをさせる改修が必要です。
【 リバースプロキシでのHTTP header の設定 】
- リバースプロキシでは、SAMLやOIDC認証の ヘッダマップを有効にします
【 HTTP header への追加の例 】
- Keycloak / idPでの認証ユーザーのEmail アドレスをhttpヘッダーに追加
Remote-User-Email: demo-user@mubit.com .
【 プロキシID を追加の例 】
バックエンドのWebアプリ側へ「プロキシID」を渡すことが出来ます
- リバースプロキシの「プロキシID」をhttpヘッダーに追加
【HTTP header方式のSSOに必要な機器構成】
- Keycloak / idP
- SAML / OIDC認証機能のID認識型リバースプロキシ( ユーザー情報のヘッダー追加機能 )
- 既存のWebアプリ ( Webアプリの改修は必要 )
- ブラウザ(プラグイン不要)
【アプライアンスの運用先】
idP連携のSAML / OIDC認証対応のID認識型リバースプロキシの運用先
「Powered BLUE Reverse-Proxy with SSO 」
- VMware / Hyper-V
- AWS / Azure / FUJITSU Hybrid IT Service FJcloud-O (富士通) / WebARENA / VPSなど
【Keycloakとリバースプロキシでの構成時のポイント】
- SAMLやOIDC認証に未対応のWebをSSO化できる
- ユーザー操作での Web への「ID / パスワード 」の入力が不要
- Web の OS不問で導入
- ターゲットWebを隠蔽できる
- 他のWebアプリとSSOでアクセスできる
- 一般的なブラウザから利用できる(ブラウザのプラグイン不要)
【お問合せ】