SSLクライアント認証」カテゴリーアーカイブ

Keycloakで既存のWebサービスへシングルサインオンを導入する方法(代理認証やHTTPヘッダー方式のリバースプロキシで構築)

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アプリ」を

  1. SAMLやOIDC認証のシングルサインオンのメンバーとして構成
  2. バックエンドの「Webアプリ」は 改修不要 *1
  3. バックエンドの「Webアプリ」は LAN / WAN / DMZ  の任意の場所に設置

に対応で運用する構成です。

*1 サードパーティ製の「Webアプリ」もWebの改修不要でSSO対応できます

 

 

【代理認証】

SAML/OIDC認証対応のID認識型リバースプロキシから、既存のWebアプリへ「ID / パスワード」を代理入力&代理認証を行います  *2

  1. ユーザー操作でのWebアプリへの「ID / パスワード」の入力不要
  2. 「ID / パスワード認証」のWebアプリをSSOのメンバーとして構成

*2  SP機能のリバースプロキシと代理入力のリバースプロキシを分離して多段構成での運用にも対応

 

【Keycloakで代理認証のSSOに必要な機器構成】

  1.  Keycloak / idP
  2.  SAML / OIDC認証機能のID認識型リバースプロキシ( ユーザー情報の代理入力機能 )
  3.  既存のWebアプリ ( Webの改修不要 / エージェント不要)
  4.  ブラウザ(プラグイン不要)

 

 

 

 

【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手順

  1. SAML / OIDC認証対応のID認識型リバースプロキシへアクセス
  2. 初回のみ  Keycloak へアクセス(シングルサインオン)
  3. idP の認証後にリバースプロキシからバックエンドのWebへユーザー情報を代理入力
  4. バックエンドのWebへ自動ログイン

 

 

 

 

 

 

 

 

 

各種Web システムへのSSO

一度の Keyclaok /  idP 認証で、複数のWebシステムへSSOでアクセスできます

 

 

 

 

 

 

 

 

 

【KeycloakとActive Directory連携でのSSO

 

 

 

Active DirectoryとKeycloakを連携

  1. keycloakとActive Directoryの連携
  2. Keycloakとリバースプロキシは、SAML / OIDC認証
  3. リバースプロキシとWebは代理認証

 

 

SSLクライアント認証の併用(多要素認証 / MFA)

 

 

 

SSLクライアント認証で Keycloak / idP やリバースプロキシへの認証を強化

  1. keycloakとのSAML / OIDC認証
  2. 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に必要な機器構成】

  1.  Keycloak / idP
  2.  SAML / OIDC認証機能のID認識型リバースプロキシ( ユーザー情報のヘッダー追加機能 )
  3.  既存のWebアプリ ( Webアプリの改修は必要 )
  4.  ブラウザ(プラグイン不要)

 

 

 

【アプライアンスの運用先】

 

 

 

 

 

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でアクセスできる
  • 一般的なブラウザから利用できる(ブラウザのプラグイン不要)

 

 

【お問合せ】

 

 

 

ご質問やご相談など