KeycloakでAzure ADと外部ID連携を構成 / OpenID ConnectでWebの認証

Keycloakを利用して、Azure ADなどの外部アイデンティティー・プロバイダーとID連携(IDフェデレーション)を構成してWebへのアクセス認証をします。Azure ADとKeycloakの認証連携としては、OpenID ConnectやSAML認証などが利用できます。今回はOpenID Connect / OIDC で連携します。

【こんな用途に】

  • Webサイトに認証を設定したい
  • IDは一元管理したい
  • Azure ADと連携したい(IDフェデレーション)
  • 管理者の負担を少なくして運用したい

 

 

【名称について】

認証の方式により、名称が異なります

  認証方式   ID管理側   Web側など
  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 (兼用)
  • Web  / RP

 

 

【OIDC対応Web / RP 】

OIDC認証対応のWebサービスを利用 もしくは 自社で構築して構成できます。

 

今回は、OIDC認証やSAML認証に対応のWebアプライアンス Powered BLUE Web 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段階)

  • WebサイトとKeycloakでOIDC認証(WebとKeycloakでのOIDC基本設定・認証動作の確認)

 

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

  • KeycloakとAzure ADとのフェデレーションの設定・認証動作の確認

 

【 ①keycloakとの認証(1段階) 】

    1. Keycloak / OP の設定
      • 1.1. レルムの作成
      • 1.2. クライアントの作成
      • 1.3. ロールの作成
      • 1.4. ユーザーの作成とロールの割り当て
      • 1.5. OIDC設定ファイル(json)のダウンロード
    2. Webサイト / RP の設定
      • 2.1. 仮想サイトの作成
      • 2.2. KeycloakのOIDC設定ファイル(json)のアップロード
      • 2.3. OIDC認証の適用ディレクトの指定
      • 2.4. Webコンテンツのアップロード
      • 2.5. KeycloakでのOIDC認証

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

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

 

 

【①keycloakとの認証(1段階)】

KeycloakでWebサイトをOIDC認証する

  • Keycloak / OP   ⇔ Web / 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ファイルをダウンロード

 

 

【Web / RPの設定】

Powered BLUE Web for SSO / IDaaS」での設定例です

OIDC認証やSAML認証に対応のWebサイト機能を有したマルチドメインで運用できるアプライアンスです。

 

【仮想サイトの作成】

OIDC認証を設定するWebサイト www.example.jp  を作成します。

 

【KeycloakからダウンロードのJSONファイルの読み込み】

 

【データのインポート】

初期設定」ボタンでKeycloakからエクスポートした読み込みデータ(json)を保存します

 

【OIDCの有効化】

OIDCを有効にする」に ✔ を入れて「保存」ボタンで適用します

 

【認証ディレクトリ】

OIDC認証を適用するディレクトリを設定します

例 /test にOIDC認証を設定

  • https://www.example.jp/     認証なし
  • https://www.example.jp/test  に OIDC認証を設定

 

 

【OIDC認証対応のWeb サイト

一般的なWebコンテンツのアップロードやWordPerssでのWebサイトの構築・運用に対応しています。

https://www.example.jp/test に適宜、Webコンテンツをアップロード もしくは WordPress でコンテンツを作成します。

一般的なWebコンテンツのWebサイト WordPressのWebサイト

 

 

【アクセス手順】

① https://www.example.jp/test にアクセス

② 初回は、Keycloak へリダイレクトされて認証を求められます

  • アカウント demo@example.jp
  • パスワード xxxxxxxx

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

 

 

 

 

【②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://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 のデータベースへ追加登録されます。

 

 

【HA運用】

KeycloakのHA構成での運用構成 例

 

 

【アプライアンスの簡単運用】

情シスの負担軽減での運用にも対応

  • サーバーの自己監視やサービスの自動再起動機能
  • パッチのスケジュールアップデート機能
  • 管理者への通知機能

 

 

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

  • VMware / Hyper-V
  • AWS / Azure / FUJITSU Hybrid IT Service FJcloud-O (富士通) / VPSなど