Keycloakを利用してAzure ADなどの外部アイデンティティー・プロバイダーとID連携(IDフェデレーション)を構成。OIDC認証対応のリバースプロキシ経由で社内Webへのアクセスをします。Azure ADとKeycloakやリバースプロキシの認証連携としては
- OpenID Connect / OIDC認証
- SAML認証
などが利用できます。今回はSAML認証で連携します。
![]() |
![]() |
リバースプロキシ経由でのアクセスに際しては、ターゲットWeb側の改修は不要です。ターゲットWeb側の認証が脆弱もしくは認証機能が無い場合でも、Azure AD側の認証でアクセスが出来ます。
【こんな場合に】
- ターゲットWeb側の改修無しで導入したい
- iDはAzure AD で管理をしたい
- VPNは利用したくない
- 管理者の負担を増やさずに運用したい
【SAML認証のリバースプロキシを中継してターゲットWebへアクセス】
必要な機器構成
Azure AD ⇔ < SAML > ⇔ Keycloak ⇔ < SAML > ⇔ リバースプロキシ ⇔ Web
- Azure AD / idP
- Keycloak / SP – idP
- リバースプロキシ / SP
- ターゲットWeb
【Keycloak / SP – idP】
一般的なKeycloakを利用できます。
また
Keycloakとしては、 「Powered BLUE for idP 」のKeycloakアプライアンスを利用することも出来ます。
Keycloakのアプライアンスは、GUIからのサーバーの基本設定およびKeycloakの構成(スタンドアロン・クラスター・バックアップ)などの設定に対応しています。
- サーバーの設定(Network / Firewall )
- ウィザードによるKeycloakの構成や設定(スタンドアロンやクラスター)
- DB 設定( H2 / MariaDB )
- DB 構成 ( 内蔵もしくは外部サーバーのどちらの構成にも対応 )
- Keycloak のバックアップ、リストア、バージョンアップ
- keycloak へのアクセスポート( 80 / 443 )
- リバースプロキシ内蔵&連携
- SSLクライアント認証
- SSLサーバー証明書の登録
- OSなどのパッチ適用
- アクティブモニタ(サーバーやサービス監視・再起動・管理者への通知)
コマンドラインからのプログラムのインストールや設定は不要
Keycloak 設定
- データベース構成
- スタンドアローンやクラスター構成
クラスター構成
【認証対応のリバースプロキシ(SP)】
リバースプロキシとしては、OIDC認証やSAML認証に対応の 「Powered BLUE Reverse-Proxy for SSO / iDaaS」を利用することも出来ます。
- マルチドメイン・マルチサイトでのリバースプロキシでの運用に対応
- サイト毎にOIDC認証やSAML認証の異なる認証での運用に対応
- サイト毎に個別のサイト管理者に権限を委譲での運用に対応
- ユーザーアカウント無しでの認証に対応
- 代理認証方式でのSSOに対応
- HTTPヘッダ方式の転送でのSSOに対応
- GUIからの設定の対応
- 自社環境での運用に対応
- アプライアンスでの‘提供
- OS RockyLinux 8.x / RedHat 8.x に対応
【構成例】
今回のSAML認証連携の構成パターンです
- Azure AD ⇔ < SAML > ⇔ Keycloak ⇔ < SAML > ⇔ リバースプロキシ ⇔ Web
- SAMLでの認証
【設定手順の概要】
①keycloakとのSAML認証(1段階)
- リバースプロキシサイトとKeycloakでSAML認証(リバースプロキシとKeycloakでのSAML基本設定・認証動作の確認)
②Azure ADとKeycloakのフェデレーション(2段階)
- KeycloakとAzure ADとのフェデレーションの設定・認証動作の確認
【 ①keycloakとリバースプロキシのSAML認証(1段階) 】
-
- リバースプロキシ / SP の設定
- 1.1. リバースプロキシの仮想サイトの作成
- 1.2. SP / SAML設定ファイルのダウンロード
- Keycloak / idP の設定
- 2.1. レルムの作成
- 2.2. クライアントの作成
- 2.3. ロールの作成
- 2.4. ユーザーの作成とロールの割り当て
- 2.5. idP / SAML設定ファイルのダウンロード
- リバースプロキシ / SP の設定
- 3.1. idP / SAML設定ファイルのアップロード
- 3.2. SAML認証の適用ディレクトの指定
- 3.3. リバースプロキシの設定
- リバースプロキシ / SP の設定
【 ②Azure ADとKeycloakのフェデレーション(2段階) 】
-
- Azure AD / Keycloakのフェデレーション設定
- 1.1. Keycloak フェデレーション設定
- 1.2. アプリの登録
- 1.2. SAML認証設定
- 1.3. Azure ADのメタデータダウンロード
- 1.4. KeycloakにAzure ADのメタデータをアップロード
- 1.5. Azure ADへユーザーアカウントの作成
- 1.6. フェデレーションでのSAML認証
- Azure AD / Keycloakのフェデレーション設定
【①keycloakとリバースプロキシのSAML認証(1段階)】
【 SP / 仮想サイトの作成 】
リバースプロキシを運用する仮想サイト 「www.example.jp」 を作成します
【 SP / SAMLの初期設定】
認証方式としてSAML 2.0を設定します
- 設定例 認証ルート / に設定
* この例では認証ルート https://www.example.jp/ にSAML認証が設定されます
【SPメタデータのダウンロード】
- リバースプロキシのSPのメタデータをダウンロードしてidPへ登録
【 idP / Keycloakの設定】
【設定のパラメータ】
- レルム名 saml-demo
- クライアントID https://www.example/saml/endpoint/metadata
- レルムロール saml-demo-role
- ユーザー名 demo
【レルムの作成】
レルム設定 例 「saml-demo」
作成後
【クライアントの作成】
クラアントメニューの右上を作成クリックして「クライアント」を作成します
ファイル選択をクリックして、ダウンロードしておいたSPのメタデータを指定して、アップロードします。
「アップロード」すると読み込んだファイルの保存します。SP側の情報が登録されます
【ロールの追加】
ロールを割り当てられたユーザーのみがアクセスできます
ロール名 例 「saml-demo-role」
【ユーザーの作成】
- ユーザー名 「demo」
- メールアカウント 「demo@example.jp」
【パスワードの設定】
作成したユーザーの「グレデンシャル」を選択してパスワードを設定します
【ユーザーへロールをアサイン】
例 ロール「saml-demo-role」を「demo 」ユーザーにアサインします
【idPメタデータのダウンロード】
idP側 (Keycloak)のエンドポイント情報が格納された「IdP メタデータファイル」をダウンロードします。
「クライアント」メニューの「インストール」の「Mod Auth Mellon files]を選択してzipファイルをダウンロードします。
ダウンロードしたzip ファイルを展開します。
以下の3ファイルが含まれています
- client-cert.pem
- idp-metadata.xml
- sp-metadata.xml
【SP側へのidPメタデータの登録】
上記でダウンロード&展開した、Keycloak側の「 idp-metadata.xml 」ファイルをインポートします
【SP側のSAML認証の有効化】
SAML 2.0 を有効にするに ✔ を入れて 「保存」 ボタンを押します
【SAML認証パスの設定】
【リバースプロキシを設定】
- リバース元 / (SAML認証)
- リバース先 https://www.xyz.com/
「変更を適用する」ボタンを押して適用します
client ⇒ https://www.example.jp/ ⇒ https://www.xyz.com/
【アクセス手順】
① https://www.example.jp/ にアクセス
② 初回は、Keycloak へリダイレクトされて認証を求められます
- アカウント demo@example.jp
- パスワード xxxxxxxx
③ 認証後にリバースプロキシ先の https://www.xyz.com/ のWebページが表示
【②Azure ADとKeycloakのフェデレーション(2段階)】
ここからは、Azure ADとKeycloakの認証連携設定を行います
【Keycloakのフェデレーション設定】
【エリアス名 適宜指定】
適宜設定 例 「saml-azure」
【Service Provider Entity ID】
https://keycloak.xyz.com/auth/realms/saml-demo
この値を Azure AD 側の 「Identifier (Entity ID)」 へ登録します
【idP / Azure ADの設定】
idP/IDaaSでSAML2.0をサポートしていれば、Powered BLUE Web for SSO/IDaaSと接続が出来ます。
今回はidPとしてAzure ADを利用します
【Azure AD の前提条件】
- 「Azure AD Premium」
【エンタープライズ ・アプリケーションブレード】
自社独自のSAMLベースWebを登録の場合には、「エンタープライズ アプリケーション」ブレードを使用して、アプリケーションを Microsoft ID プラットフォームに接続します。
【アプリの登録】
- お使いの Microsoft ID プラットフォーム管理者アカウントを使用して、Azure Active Directory ポータルにサインインします。
- Azure Active Directory を選択
- [エンタープライズ アプリケーション] > [新しいアプリケーション] の順に選択します。
- (省略可能だが推奨) [ギャラリーから追加する] 検索ボックスに、アプリケーションの表示名を入力します。 検索結果にアプリケーションが表示されたら、それを選択し、この手順の残りをスキップします。
- [ギャラリー以外のアプリケーション] を選択します。 [独自のアプリケーションの追加] ページが表示されます。
- 新しいアプリケーションの表示名を入力します。
- [追加] を選択します。
この方法でアプリケーションを追加することにより、事前に統合されたアプリケーションに似たエクスペリエンスを提供します。 まず、アプリケーションのサイドバーから、 [シングル サインオン] を選択します。 次の画面 ( [シングル サインオン方式の選択] ) は、SSO を構成するためのオプションを示しています。
SP側のxmlを読み込み
Keycloak側のxmlを読み込ませます
メタデータファイルをクリック
idPに読み込むメタデータファイルの指定(SP側のxmlファイル)
もしくは、以下の項目をxmlの内容に沿って記述します
Azure AD SAML の設定例
SAMLの項目
SP側のxmlの内容に従って、以下の項目を設定します。SP側のxmlファイルのアップロードでの登録も出来ます。
エンティティID
https://keycloak.xyz.com/auth/realms/saml-demo
応答URL (Assertion Consumer Service URL )
https://keycloak.xyz.com/auth/realms/saml-demo/broker/saml-azure/endpoint/postResponse
サインオンURL
空欄でも可能
リレー状態
空欄でも可能
ログアウトURL
空欄でも可能
② ユーザー属性とクレーム
必要に応じて設定
③ SAML署名
idP/Azure AD側のフェデレーションメタデータ(XML)をダウンロードして、SP側に登録します
【idp側のxmlをインポート&登録】
ファイルよりインポートを選択
Azure AD 側のフェデレーション・メタデータをKeycloak側にアップロードします
グループアクセスコントロールが不要の場合には、ここまでの設定となります
Validate
idPおよびSP側の設定が正しければ、「Validate] ボタンをクリックすると SP側のWebページが表示されます。
【ユーザーの作成】
Azure ADへユーザーアカウントの作成
「+新しいユーザー」を選択
アカウント
- ユーザー名 keycloak-user
- 姓 user
- 名 keycloak
- パスワード keycloak-test
* keycloak-user@tenant-name.onmicrosoft.com でE-mailアカウントが作成されます
【SAML認証&フェデレーションのテスト】
例 現在のユーザーとしてサインイン
エラーが表示される場合には、メッセージをコピーします
エラーが表示される場合には、メッセージをクリップボードに貼り付けると修正方法が、サジェスチョンされます
エラーを適宜修正して、正常にアクセス出来ればセットアップは終了です。
SAMLアプリケーションにユーザーとグループのアサイン
作成したSAMLアプリケーションを利用出来る、ユーザーやグループを割り当てます
- アプリケーションのサイドバーで、 [ユーザーとグループ] を選択します。 [<アプリケーション名> – ユーザーとグループ] ページが表示され、割り当てられたユーザーとグループの現在の一覧が示されます。
- [ユーザーの追加] を選択します。 [割り当ての追加] ページが表示されます。
- [ユーザーとグループ] (選択した <数>) を選択します。 [ユーザーとグループ] ページが表示され、使用可能なユーザーとグループの一覧が示されます。
- 一覧から割り当てるユーザーまたはグループを入力するか、スクロールして見つけます。
- 追加する各ユーザーまたはグループを選択し、 [選択] ボタンを選択します。 [ユーザーとグループ] ページは表示されなくなります。
- [割り当ての追加] ページで [割り当て] を選択します。 [ – ユーザーとグループ] ページが表示され、追加ユーザーが一覧に示されます。
IDフェデレーションの運用
① ターゲットのリバースプロキシ https://www.example.jp/test へアクセス
② 初回は、Keycloak へリダイレクトされて認証を求められます
- 「SAML-Azure」を選択(IDフェデレーション)
③Azure ADのログイン画面ヘ遷移
- アカウント keycloak-user@tenant-name.onmicrosoft.com
- パスワード keycloak-test
④ 認証後に https://www.example.jp/test のWebページが表示
【アカウントの管理】
Azure AD 側で管理のユーザーでログイン時には、Keycloak のデフォルトでは新規ユーザー情報
- ユーザー名 keycloak-user
- E-メール keycloak-user@tenant-name.onmicrosoft.com
- 姓 user
- 名 keycloak
などはKeycloak のデータベースへ追加登録されます。