萌えハッカーニュースリーダー

2025/03/17 12:10 Configure Azure Entra ID as IdP on Keycloak

出典: https://blog.ght1pc9kc.fr/en/2023/configure-azure-entra-id-as-idp-on-keycloak/
hakase
博士

やあ、ロボ子!今日はSpring Boot WebFluxとKeycloakを使って、Microsoft Entra IDと連携する話をするのじゃ。

roboko
ロボ子

博士、それは面白そうですね!認証周りの設定は複雑になりがちなので、ぜひ教えてください。

hakase
博士

まずはAzure側の設定から始めるぞ。ポイントは、インターフェースを英語に設定することじゃ。翻訳の問題を避けるためじゃな。

roboko
ロボ子

なるほど、言語設定が重要なんですね。具体的にはどのような設定をするんですか?

hakase
博士

Microsoft Entra IDでアプリを登録するのじゃ。名前をつけて、シングルテナントを選択。それから、OpenID ConnectメタデータドキュメントのURLや、アプリケーションID、シークレットをコピーしておくぞ。

roboko
ロボ子

シークレットは一度しか表示されないので、慎重に扱わないといけませんね。

hakase
博士

その通り!トークン構成で、グループ要求を追加して、グループをIDで送信するように設定するのも忘れずにの。

roboko
ロボ子

Azure側の設定が終わったら、次はKeycloak側の設定ですね。

hakase
博士

そうじゃ。KeycloakでRealmを作成し、Identity ProvidersメニューでOpenID Connectを選択するのじゃ。エイリアスをazureに設定して、Azureからコピーした情報を入力していくぞ。

roboko
ロボ子

クライアント認証を「Client send secret as post」に設定したり、スコープを「openid profile email」に設定したりするんですね。

hakase
博士

その通り!「Trust email」をオンにして、同期モードを「Force」に設定するのも重要じゃ。Identity Provider設定からリダイレクトURIをコピーして、Azureの認証メニューに追加するのも忘れずにの。

roboko
ロボ子

Mappersタブでは、AzureグループをKeycloakロールにマッピングするんですね。同期モードは「Inherit」に設定するんですね。

hakase
博士

そうじゃ。「Claim to Role」を選択して、Claimを「groups」に、Claim ValueをAzureグループIDに設定するのじゃ。Roleを対応するKeycloakロールに設定すればOKじゃ。

roboko
ロボ子

Client scopes -> roles -> realm rolesで、「Add to userinfo」を有効化すると、JWTトークンにROLEが含まれるようになるんですね。

hakase
博士

最後にテストじゃ!KeycloakのクライアントメニューからアカウントURLを開き、Azure AD経由でログインしてみるのじゃ。ログイン後、KeycloakのアカウントインターフェースでAzureから取得したアカウント情報を確認できれば成功じゃ。

roboko
ロボ子

Keycloakの管理インターフェースで、ユーザーが作成されていることや、Azureグループに対応するロールを持っていることを確認するのも大切ですね。

hakase
博士

その通り!これでSpring Boot WebFluxアプリケーションでKeycloakを認証プロバイダーとして使用し、Microsoft Entra IDをOpenID Connect経由でKeycloakのIDプロバイダーとして接続できるようになったぞ!

roboko
ロボ子

博士、ありがとうございました!とても勉強になりました。

hakase
博士

どういたしまして。しかし、この設定、まるで迷路みたいじゃな。出口はどこじゃ〜?

roboko
ロボ子

博士、出口はいつも目の前にありますよ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search