Powered BLUE」カテゴリーアーカイブ

KeycloakとAzure ADでのIDフェデレーションを構成 / SAML認証対応のリバースプロキシで既存Webへアクセス

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アプライアンスを利用することも出来ます。

https://www.mubit.co.jp/pb-blog/wp-content/uploads/2022/02/keycloak-0.png

 

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 に対応

 

https://www.mubit.co.jp/pb-blog/wp-content/uploads/2022/08/pb-880-1.png

 

 

【構成例】

今回の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段階) 】

    1. リバースプロキシ / SP の設定
      • 1.1. リバースプロキシの仮想サイトの作成
      • 1.2. SP / SAML設定ファイルのダウンロード
    2. Keycloak / idP の設定
      • 2.1. レルムの作成
      • 2.2. クライアントの作成
      • 2.3. ロールの作成
      • 2.4. ユーザーの作成とロールの割り当て
      • 2.5. idP / SAML設定ファイルのダウンロード
    3. リバースプロキシ / SP の設定
      • 3.1. idP / SAML設定ファイルのアップロード
      • 3.2. SAML認証の適用ディレクトの指定
      • 3.3. リバースプロキシの設定

 

【  ②Azure ADとKeycloakのフェデレーション(2段階) 】

    1. 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認証

 

 

【①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のフェデレーション設定】

  • アイデンティテイプロバイダ」の項を選択
  • SAML2.0」を選択

 

 

【エリアス名 適宜指定】

適宜設定 例 「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を利用します

https://www.mubit.co.jp/pb-blog/wp-content/uploads/2022/08/azure-ad-logo-1.png

 

【Azure AD の前提条件】

  • Azure AD Premium

 

【エンタープライズ ・アプリケーションブレード】

自社独自のSAMLベースWebを登録の場合には、「エンタープライズ アプリケーション」ブレードを使用して、アプリケーションを Microsoft ID プラットフォームに接続します。

 

 

【アプリの登録】

  • お使いの Microsoft ID プラットフォーム管理者アカウントを使用して、Azure Active Directory ポータルにサインインします。
  • Azure Active Directory を選択
  • [エンタープライズ アプリケーション] > [新しいアプリケーション] の順に選択します。
  • (省略可能だが推奨) [ギャラリーから追加する] 検索ボックスに、アプリケーションの表示名を入力します。 検索結果にアプリケーションが表示されたら、それを選択し、この手順の残りをスキップします。
  • [ギャラリー以外のアプリケーション] を選択します。 [独自のアプリケーションの追加] ページが表示されます。

  1. 新しいアプリケーションの表示名を入力します。
  2. [追加] を選択します。

この方法でアプリケーションを追加することにより、事前に統合されたアプリケーションに似たエクスペリエンスを提供します。 まず、アプリケーションのサイドバーから、 [シングル サインオン] を選択します。 次の画面 ( [シングル サインオン方式の選択] ) は、SSO を構成するためのオプションを示しています。

 

 

【SAMLを選択】

① 基本的なSAML構成を選択

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アプリケーションを利用出来る、ユーザーやグループを割り当てます

  • アプリケーションのサイドバーで、 [ユーザーとグループ] を選択します。 [<アプリケーション名> – ユーザーとグループ] ページが表示され、割り当てられたユーザーとグループの現在の一覧が示されます。
  • [ユーザーの追加] を選択します。 [割り当ての追加] ページが表示されます。
  • [ユーザーとグループ] (選択した <数>) を選択します。 [ユーザーとグループ] ページが表示され、使用可能なユーザーとグループの一覧が示されます。
  • 一覧から割り当てるユーザーまたはグループを入力するか、スクロールして見つけます。
  • 追加する各ユーザーまたはグループを選択し、 [選択] ボタンを選択します。 [ユーザーとグループ] ページは表示されなくなります。
  • [割り当ての追加] ページで [割り当て] を選択します。 [ – ユーザーとグループ] ページが表示され、追加ユーザーが一覧に示されます。

https://docs.microsoft.com/ja-jp/azure/active-directory/manage-apps/media/configure-single-sign-on-non-gallery-applications/application-users-and-groups.png

 

IDフェデレーションの運用

①   ターゲットのリバースプロキシ https://www.example.jp/test  へアクセス
②   初回は、Keycloak へリダイレクトされて認証を求められます

  • 「SAML-Azure」を選択(IDフェデレーション)

 

③Azure ADのログイン画面ヘ遷移

  • アカウント keycloak-user@tenant-name.onmicrosoft.com
  • パスワード keycloak-test

https://japan.zdnet.com/storage/2017/08/03/de5e58b6c73ae8f65bb4ce49490d6dce/newsigninpage.jpg

④ 認証後に https://www.example.jp/test のWebページが表示

 

【アカウントの管理】

Azure AD 側で管理のユーザーでログイン時には、Keycloak のデフォルトでは新規ユーザー情報

  • ユーザー名 keycloak-user
  • E-メール   keycloak-user@tenant-name.onmicrosoft.com
  • 姓 user
  • 名    keycloak

などはKeycloak のデータベースへ追加登録されます。