Keycloakを利用してAzure ADなどの外部アイデンティティー・プロバイダーとID連携(IDフェデレーション)を構成。OIDC認証対応のリバースプロキシ経由で社内Webへのアクセスをします。Azure ADとKeycloakやリバースプロキシの認証連携としては、OpenID ConnectやSAML認証などが利用できます。今回はOpenID Connect / OIDC で連携します。
リバースプロキシ経由でのアクセスに際しては、ターゲットWeb側の改修は不要です。ターゲットWeb側の認証が脆弱もしくは認証機能が無い場合でも、Azure AD側の認証を追加できます。
【こんな用途に】
- 社内Webサイトにアクセスさせたい
- IDは一元管理したい
- Azure ADと連携したい(IDフェデレーション)
- 管理者の負担を少なくして運用したい
【名称について】
認証の方式により、名称が異なります
認証方式 | ID管理側 | リバースプロキシ側など |
SAML認証時 | idP / Identity Provider | SP / Service Provider |
OIDC認証時 | OP / OpenID Provider | RP / Relying Party |
【Keycloak を中継してAzure ADと外部ID連携を構成】
必要な機器構成
Azure AD ⇔ < OIDC > ⇔ Keycloak ⇔ < OIDC > ⇔ リバースプロキシ ⇔ Web
- Azure AD / OP
- Keycloak / RP and OP (兼用)
- リバースプロキシ / RP
- ターゲットWeb
【OIDC対応リバースプロキシ / RP 】
OIDC認証対応のリバースプロキシを利用 もしくは 自社で構築して構成できます。
今回は、OIDC認証やSAML認証に対応のリバースプロキシ・アプライアンス 「Powered BLUE ReverseProxy for SSO / IDaaS 」を利用します。
- マルチドメイン・マルチサイトでのリバースプロキシの構築運用に対応
- サイト毎にOIDC認証やSAML認証の異なるWeb認証での運用に対応
- サイト毎に個別のサイト管理者に権限を委譲での運用に対応
- リバースプロキシにはユーザーアカウント無しでの認証に対応
- GUIからの設定の対応
- 自社環境での運用に対応
- アプライアンスでの‘提供
- OS RockyLinux 8.x / RedHat 8.x に対応
![]() |
![]() |
【Keycloak / OP 】
一般的なKeycloakを利用できます。
今回はKeycloakとしては、 「Powered BLUE for idP 」のKeycloakアプライアンスを利用します。
GUIからのサーバーの基本設定およびKeycloakの構成(スタンドアロン・クラスター・バックアップ)などの設定に対応しています。
- サーバーの設定(Network / Firewall )
- ウィザードによるKeycloakの構成や設定(スタンドアロンやクラスター)
- DB 設定( H2 / MariaDB )
- DB 構成 ( 内蔵もしくは外部サーバーのどちらの構成にも対応 )
- Keycloak のバックアップ、リストア、バージョンアップ
- keycloak へのアクセスポート( 80 / 443 )
- リバースプロキシ連携機能
- SSLクライアント認証
- SSLサーバー証明書の登録機能
- OSなどのパッチ適用
- アクティブモニタ(サーバーやサービス監視・再起動・管理者への通知)
コマンドラインからのプログラムのインストールや設定は不要
( 画面のイメージをクリックで拡大表示 )
【Keycloak のGUIパス】
WildFlyベースまでのKeycloak の管理GUIのパス /auth
- https://xxx.yyy.zzz.ttt/auth
QuarkusベースでのKeycloak の管理GUIのパス /
- https://xxx.yyy.zzz.ttt/
Powered BLUE アプライアンスは任意のパスおよびポート設定機能 例 /xyz
- https://xxx.yyy.zzz.ttt/xyz
【Keycloakのバージョンアップ 】
バージョンアップ前 例 18.0.1
バージョンアップ後 例 19.0.1
【Keycloakのバックアップやリストア 】
【ネットワーク構成】
【設定手順の概要】
①keycloakとの認証(1段階)
- リバースプロキシサイトとKeycloakでOIDC認証(リバースプロキシとKeycloakでのOIDC基本設定・認証動作の確認)
②Azure ADとKeycloakのフェデレーション(2段階)
- KeycloakとAzure ADとのフェデレーションの設定・認証動作の確認
【 ①keycloakとの認証(1段階) 】
-
- Keycloak / OP の設定
- 1.1. レルムの作成
- 1.2. クライアントの作成
- 1.3. ロールの作成
- 1.4. ユーザーの作成とロールの割り当て
- 1.5. OIDC設定ファイル(json)のダウンロード
- リバースプロキシ / RP の設定
- 2.1. 仮想サイトの作成
- 2.2. KeycloakのOIDC設定ファイル(json)のアップロード
- 2.3. OIDC認証の適用ディレクトの指定
- 2.4. 仮想サイトへリバースプロキシを設定
- 2.5. KeycloakでのOIDC認証
- Keycloak / OP の設定
【 ②Azure ADとKeycloakのフェデレーション(2段階) 】
-
- Azure AD / フェデレーションの設定
- 1.1. アプリの登録
- 1.2. KeycloakにIDプロバイダの登録
- 1.3. ADにWebプラットフォームを作成
- 1.4. KeycloakにAzure ADの設定ファイルの読み込み
- 1.5. Azure ADでクライアントシークレットを作成
- 1.6. クライアントシークレットをKeycloakへ登録
- 1.7. Azure ADにユーザーアカウントを作成
- 1.8. フェデレーションでのOIDC認証
- Azure AD / フェデレーションの設定
【①keycloakとの認証(1段階)】
KeycloakでリバースプロキシをOIDC認証する
- Keycloak / OP ⇔ Reverse-Proxy / RP
- OpenID Connect / OIDCでの認証
【Keycloakの設定】
- Keycloakの管理GUIへは運用時の httpsのFQDN / IP でアクセスします
- IPアドレスでアクセスすると、生成されるURLなどもIPベースとなります
【レルムの作成】
名称設定 例 rev-o
作成後 rev-o
【クライアントの作成】
- クライアントID 例 oidc-demo-client (名称は適宜付与)
- クライアントプロトコル 選択 openid-connect
- アクセスタイプ 選択 confidential
- 有効なリダイレクトURL 例 https://www.example.jp/oidc/redirect_uri
* リダイレクトURLは、Web / RP 側のOIDCのURLを記載します
【ロールの追加】
ロールを割り当てられたユーザーのみがアクセスできます
例 oidc-demo-client
【ユーザーの作成】
- ユーザー名 demo
- メールアカウント demo@example.jp
【パスワードの設定】
作成したユーザーの「クレデンシャル」を選択してパスワードを設定します
【ユーザーへロールのアサイン】
例 oidc-demo-role
【OIDCの設定ファイル】
Keycloak からOIDC設定ファイルのダウンロード
例 oidc-demo-client の編集を選択
「インストール」タブをクリックしてjsonファイルを「ダウンロード」します
【JSONファイルのダウンロード】
Keycloakのjsonファイルをダウンロード
【リバースプロキシ / RPの設定】
「Powered BLUE ReverseProxy for SSO / IDaaS」での設定例です
OIDC認証やSAML認証に対応のリバースプロキシ機能を有したマルチドメインで運用できるアプライアンスです。
【仮想サイトの作成】
OIDC認証を設定するWebサイト www.example.jp を作成します。
【KeycloakからダウンロードのJSONファイルの読み込み】
【データのインポート】
「初期設定」ボタンでKeycloakからエクスポートした読み込みデータ(json)を保存します
【OIDCの有効化】
「OIDCを有効にする」に ✔ を入れて「保存」ボタンで適用します
【認証ディレクトリ】
OIDC認証を適用するディレクトリを設定します
例 /test にOIDC認証とリバースプロキシを設定
- https://www.example.jp/ 認証なし
- https://www.example.jp/test に OIDC認証
【リバースプロキシを設定】
仮想サイト www.example.jp へリバースプロキシを設定します。
リバースプロキシのパスを指定
- アクセス元 /test
- リダイレクト先 https://web.xyz.com/
- user ⇒ https://www.example.jp/test ⇒ https://www.xyz.com/
【アクセス手順】
① https://www.example.jp/test にアクセス
② 初回は、Keycloak へリダイレクトされて認証を求められます
- アカウント demo@example.jp
- パスワード xxxxxxxx
③ 認証後に https://www.example.jp/test 経由でリダイレクト先のWebページ
- https://web.xyz.com/
が表示されます
【②Azure ADとKeycloakのフェデレーション(2段階)】
ここからは、Azure ADとKeycloakの認証連携設定を行います
【Azure ADの設定】
「Azure Active Directory」を選択
【アプリケーションの登録】
「アプリの登録」を選択
【アプリケーションの新規登録】
「+新規登録」を選択
【アプリケーションの名称設定】
例 keycloak-oidc (名称は適宜設定します)
「登録」ボタンを押します
【Keycloak へ AzureAD の設定を追加】
Keycloak に Azure AD を登録するためのIDプロバイダーを作成
「アイデンティティー・プロバイダー」の項から「OpenID Connect 1.0 」を選択
Keycloakの「リダイレクトURI 」をコピーしてAzure ADに登録します。
リダイレクトURIは
- https:// 設定可能
- http://localhost 設定可能
- http:// 設定不可 (管理画面に https://でログインしなおします)
* リダイレクトURLが http://の場合には、Azure AD側の制限により動作しません。
「エイリアス」設定例 AzureAD
* エイリアス文字列にスペースが入ると、URIにスペースが入るためAzure AD側で動作しません。
コピーした「リダイレクトURI」 を Azure AD へ登録します。
Azure AD の画面から「リダイレクトURI を追加する」を選択します。
【プラットフォームを追加】
「+プラットファームを追加」で選択します。
「Webアプリケーション」を選択
「リダイレクトURI」へKeycloak側のURIを登録します
「構成」ボタンを押して、設定を保存します
「エンドポイント」を選択
「OpenID Connect メタデータ ドキュメント」をコピーしてKeycloakへ登録します
【Keycloak 側】
外部IDP設定のインポートへURLへ登録
「URLよりインポート」ボタンを押すとAzure AD側の設定が取り込まれます
【パラメータの設定】
- クライアント認証 「基本認証で送信されたクライアントシークレット」を選択
- クライアントID Azure AD側の「アプリケーション(クライアント)ID」 を登録
- クライアント・シークレット Azure AD側で作成の「クライアントシークレット」を登録
【Azure AD】
「アプリケーション(クライアント)ID」 をkeycloak側の「クライアントID」の項に登録
「証明書とシークレット」を選択
【シークレットの作成】
「+新しいクライアントシークレット」を押す
- 名称 適宜設定 例 for-keycloak-oidc
- 有効期間 例 6ケ月
- 「追加」ボタンを押す
【クライアント・シークレット】
Azure ADの「シークレットの値」を keycloak 側の「クライアント・シークレット」の項に登録します
【Azure ADにログイン・ユーザー作成】
ここではAzure AD に新しいユーザーを作成します。
「+新しいユーザー」を選択
アカウント
- ユーザー名 keycloak-user
- 姓 user
- 名 keycloak
- パスワード keycloak-test
* keycloak-user@tenant-name.onmicrosoft.com でE-mailアカウントが作成されます
【IDフェデレーション】
① https://www.example.jp/test にアクセス
② 初回は、Keycloak へリダイレクトされて認証を求められます
- 「AzureAD」を選択(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 のデータベースへ追加登録されます。
【HA運用】
KeycloakのHA構成での運用構成 例
【アプライアンスの簡単運用】
情シスの負担軽減での運用にも対応
![]() |
![]() |
- サーバーの自己監視やサービスの自動再起動機能
- パッチのスケジュールアップデート機能
- 管理者への通知機能
【アプライアンス運用先】
- VMware / Hyper-V
- AWS / Azure / FUJITSU Hybrid IT Service FJcloud-O (富士通) / VPSなど