
Generative AI Use Cases JP (略称: GenU)にMicrosoft Entra IDをSAML連携する
はじめに
生成AIのユースケース集である Generative AI Use Cases JP (以降、GenU) は認証基盤にAmazon Cognitoを使用しており、Microsoft Entra ID(旧Azure AD)によるSAML連携が可能です。
公式の手順は提供されていますが、Amazon Cognitoの最新UIでは一部操作方法が変わっており、設定に困る場面があったので改めて最新手順をブログにまとめました。
設定手順
1.事前準備
まずはじめにGenUの初回デプロイを済ませておく必要があります。
以下のコマンドでGenUをデプロイします。
git clone https://github.com/aws-samples/generative-ai-use-cases-jp
npm ci
npx -w packages/cdk cdk bootstrap
npm run cdk:deploy:quick
2.Cognitoのドメイン作成
GenUデプロイ時に作成されたGenerativeAiUseCasesStack
からCognitoのユーザープールを開きます。
サイドバーからドメイン
に遷移しアクション
からCognito ドメインの作成
を選択します。
任意のドメインプレフィックスを入力しCognito ドメインの作成
を選択します。
3.Microsoft Entra ID の設定
続いてMicrosoft Entra ID (旧 Azure Active Directory) で SAML 連携を有効化します。
Entra IDの設定は、Microsoft Entra管理センター、またはMicrosoft Azure Portalから実施できます。
今回はMicrosoft Entra管理センターを使用して、Entra IDの設定を行います。
サイドバーからエンタープライズ アプリケーション
を選択し、新しいアプリケーション
を押下します。
続いて独自のアプリケーションの作成
を選択します。
任意のアプリ名を設定し、作成
を選択します。
アプリケーションが作成できたら、シングル サインオン
に遷移しSAML
を選択します。
セットアップ画面が表示されたら、基本的な SAML 構成
内の編集ボタンを押下します。
以下のパラメータを設定し、保存
を押下します。
# フォーマット
urn:amazon:cognito:sp:<UserPoolID>
# 入力例
urn:amazon:cognito:sp:ap-northeast-1_p0oD4M3F0
# フォーマット
https://<Cognitoドメイン>/saml2/idpresponse
# 入力例
https://cm-sakai.auth.ap-northeast-1.amazoncognito.com/saml2/idpresponse
フェデレーション メタデータ XML
をダウンロードします。
ユーザーとグループ
からユーザーの追加を行います。
今回はあらかじめ作成しておいたユーザーを選択します。
適宜ご自身の要件に合わせて設定してください。
割り当て
を押下します。
4.Cognitoのプロバイダー設定
サイドバーからソーシャルプロバイダーとカスタムプロバイダー
に遷移し、アイデンティティプロバイダーを追加
を押下します。
フェデレーティッドサインインのオプションはSAML
を選択し、プロバイダー名
と識別子
を設定します。
メタデータドキュメント
のファイルを選択
を押下し、3.Microsoft Entra ID の設定
でダウンロードしたXMLドキュメントをアップロードします。
最後にSAML プロバイダーとユーザープールの間で属性をマッピング
から別の属性を追加
を選択し、ユーザープール属性をemail
にし以下の文字列をSAML属性として追加します。
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
5.CognitoのHosted UI設定
続いてEntra IDとの連携をHosted UIで利用するための設定を行います。
サイドバーからアプリケーションクライアント
に遷移し、作成済みのアプリケーションクライアントを選択します。
ログインページ
タブを選択し、編集ボタンを押下します。
許可されているコールバック URL
と許可されているサインアウト URL
にGenUのWebURLを入力します。
ID プロバイダーをCognitoユーザープール
からEntra ID
に設定し、変更を保存します。
6.cdk.jsonの編集
最後にcdk.json側にパラメータを設定し終了です。
以下の項目を変更し、再デプロイを行うことでSAML連携が有効化されます。
"context": {
<省略>
- "samlAuthEnabled": false,
+ "samlAuthEnabled": true,
- "samlCognitoDomainName": "",
+ "samlCognitoDomainName": "<Cognitoドメイン>.auth.ap-northeast-1.amazoncognito.com",
- "samlCognitoFederatedIdentityProviderName": "",
+ "samlCognitoFederatedIdentityProviderName": "EntraID",
npm run cdk:deploy:quick
7.動作確認
ログイン押下後にMicrosoftのサインイン画面が表示されたら設定完了です。
最後に
今回はGenUでEntra IDを用いたSAML連携を設定してみました。
SAML専用の認証画面に切り替わるため、従来のCognitoユーザープールによる認証機能を使用したい場合は注意が必要です。
どなたかの参考になれば幸いです。
参考