Entra IDとOIDCを使用したDAIでのSSOの有効化
このページでは、OpenID Connect (OIDC) プロトコルを使用して、DAI と Microsoft Entra ID (旧称 "Azure AD") の間でシングル サインオン (SSO) を構成するために必要な手順について説明します。Entra IDとDAIの組み込みIDおよびアクセス管理プロバイダ(Keycloak) を相互に統合するように設定する方法について説明します。このプロセスに関連する手順の概要は、このページの右側にあるページメニューで確認できます。
Intenden Audience: このトピックは、SSO 統合を検討している DAI 管理者を対象としています。
SSO と DAI を統合する利点の詳細については、シングル サインオン (SSO) は DAI でどのように機能しますか? を参照してください。 Entra ID と SAML v2 プロトコルとの統合については、Entra ID と SAML v2 を使用して DAI で SSO を有効にする を参照してください。
このページでは、Keycloak の設定方法と Entra ID の設定方法の例を示します。すべての組織のID管理構成は異なり、構成の誤りは重大な結果をもたらす可能性があるため、最終的な設計と展開計画は独自の仕様に合わせる必要があります。Entra IDの設定がここに記載されている例と互換性がない場合は、お客様 Supportに連絡して、どのように支援できるかを確認してください。
前提条件
DAI を Entra ID と統合するには、環境が Entra ID、DAI、およびネットワーキングの次の前提条件を満たしている必要があります。
| コンポーネント | 要件 |
|---|---|
| Entra ID | Components: 組織には、Microsoft Entra ID の設定に使用できる Microsoft Azure アカウントが必要です。 Users and Groups in Entra ID: - DAI にアクセスする必要があるユーザーは、Entra ID. にすでに存在している必要があります。- オプションで、Entra IDにグループを作成して、DAI管理者、ユーザー、およびビューアの役割を表すことができます。または、3. Create Application Roles を参照してください。 |
| DAI | 既存の DAI インストール環境に Keycloak 上のローカルユーザーが存在する場合でも、SSO(シングルサインオン)を有効化することができます。 Keycloak は、ユーザーが初めて SSO ログインを行う際に、これらのローカルアカウントを SSO 統合済みのユーザーアカウントとして結合・変換することが可能です。 このようにアカウントをリンクすることで、ユーザーは自分のモデルへのアクセス権を失うことがありません。 もしローカルのユーザー名が Entra ID(旧 Azure AD)のユーザー名と一致していない場合は、Keycloak を一時的にユーザー名の変更を許可するよう設定することで修正できます。 設定手順については「SSO 用ユーザー名の編集 」を参照してください。 Eggplant Cloud を使用している場合は、カスタマーサポート までお問い合わせください。Entra ID 上に少なくとも 1 つのユーザーアカウント(推奨:DAI 管理者アカウント)が必要です。 このアカウントを使用して DAI にログインできれば、SSO の統合が正常に完了したことを確認できます。 |
| Network | - Eggplant Cloudを使用していない場合は、Entra IDが使用するように設定されているポート(通常は443) で、KeycloakがEntra IDに対してHTTPS呼び出しを実行できることを確認する必要があります。 - エンドユーザーのワークステーションは、Entra IDログイン画面とSAMLエンドポイントにアクセスできる必要があります * Entra IDは、ユーザーが1つのシステムからログアウトすると、他のシステムからもログアウトされるように、Keycloakに対してHTTPS呼び出しを行うことができる必要があります。 |
Entra ID でのアプリケーション統合の設定
次の手順は、Entra ID で DAI のアプリケーション統合を設定するプロセスをまとめたものです。
1. Entra ID でアプリケーションを作成します
次の手順では、Entra ID でアプリケーションを作成する方法について説明します。Entra ID でのアプリケーションの作成の詳細については、クイック スタート: Microsoft ID プラットフォームにアプリを登録する - Microsoft ID プラットフォームを参照してください。
-
Entra IDで、Enterprise Applicationsを選択し、トップメニューからCreate your own applicationをクリックします。
-
アプリケーション (DAI インスタンス) に関する情報を次のように入力します。
フィールド名 値 アプリの名前は何ですか? この Enterprise Application に割り当てる任意の名前。これらの例では、アプリケーションに「Eggplant Test」という名前を使用しています。(以下の注を参照してください)。 アプリケーションで何をしようとしていますか? Integrate any other application you don't find in the gallery (non-gallery) を選択します。 注記Eggplant Testの複数のインスタンスを含む複雑なセットアップがある場合は、インスタンスを区別できる必要があります。たとえば、インスタンスの 1 つに Eggplant Test (production) という名前を付けて、他のインスタンスと区別します。
-
Create をクリックします。この新しいアプリケーションの詳細ページが開きます。
2) アプリの登録 を設定します
-
Entra IDランディングページに戻り、左側のナビゲーションメニューからApp Registrationsを選択します。
-
All applications を選択し、DAI 用に作成したアプリケーション (Eggplant Test など) を検索します。
-
アプリケーションが見つかったら、それをクリックして詳細を表示します。
-
マニフェストを修正するには、左側のナビゲーション メニューからManifestを選択し、JSON で次の属性が追加または更新されていることを確認します。
"api": {..."requestedAccessTokenVersion": 2...}"tags": ["WindowsAzureActiveDirectoryIntegratedApp"] -
Saveをクリックします。
3) アプリケーションロールの作成
次の手順では、Entra ID で DAI Viewer、User、および Administrator アプリケーション ロールを作成する方法について説明します。Entra ID でのアプリケーション ロールの作成の詳細については、アプリ ロールを追加し、トークンから取得する - Microsoft ID プラットフォーム を参照してください。
-
左側のナビゲーションから App Roles を選択し、Create app role を選択します。
-
DAI Viewer ロールに関する情報を次のように入力します。
フィールド名 値 Display name Eggplant Test - DAI Viewer(下記の注を参照)許可されるメンバーの種類 User/Groups値 dai_viewer説明 DAI ビューアは DAI で読み取り専用操作を実行できます。このアプリの役割を有効にしますか? はい(チェック済み)注記ロール名に推奨される形式は、上記のように、アプリケーション名をプレフィックスとしてロール名を完全修飾することです(
Eggplant Test - DAI Viewer)。 -
Apply をクリックします。
-
DAI User ロールを作成するプロセスを繰り返して、App Roles を選択し、次に Create app role を選択し、次の情報を入力します。
フィールド名 値 表示名 Eggplantテスト-DAIユーザー許可されるメンバーの種類 User/Groups値 dai_user説明 DAIユーザーは、DAIで管理機能を除くすべての機能を実行できます。このアプリの役割を有効にしますか? はい(チェック済み) -
Apply をクリックします。
-
DAI Administrator ロールに対して、App Roles を選択してから Create app role を選択し、次の情報を入力して、プロセスを繰り返します:
フィールド名 値 表示名 Eggplant DAIの管理.許可されるメンバーの種類 User/Groups値 dai_admin説明 DAI管理者は、管理機能を含むDAIへの完全なアクセス権を持っています。このアプリの役割を有効にしますか? はい(チェック済み) -
Applyをクリックします。
4) OIDC を使用して、アプリケーションを Entra ID で公開します
OpenID Connect (OIDC) プロトコルを使用して Entra ID でアプリケーションを公開するには:
-
左側のナビゲーション メニューからExpose an APIを選択し、Application ID のEdit を選択します。
-
次のようにフォームに記入します。
フィールド名 値 アプリケーション ID URI 任意の一意の URI 例: api://eggplant-test(以下の注を参照) -
Saveをクリックします。
注記api://スキームの使用をお勧めします。https://を使用することもできますが、アプリケーションのリダイレクトURIとアプリケーションIDが同じドメイン上にない場合、問題が発生する可能性があります。 -
引き続き Expose an API セクションで、 Add a Scopeを選択し、次のようにスコープを定義します。
フィールド名 値 スコープ名 eggplant-test誰が同意できますか? ユーザーがこのアプリケーションにアクセスすることに同意できるようにするかどうかに応じて、いずれかのオプションを選択できます。 管理者の同意の表示名 Eggplant Testへのアクセスを許可する管理者の同意の説明 サインインしたユーザーにEggplant Testアプリケーションへのアクセスを許可する管理者の同意の表示名 Eggplant Testへのアクセスを許可するユーザーの同意に関する記述 Eggplant Testアプリケーションへのアクセスを許可するState Enabled -
Add Scope をクリックします。
要求 の構成
次の手順に従って、要求を構成します。
-
左側のナビゲーション メニューからToken Configurationを選択し、Add optional claimを選択します。
-
トークンの種類
IDを選択します。 -
upnを選択し、Add をクリックします。
5) クライアントシークレット を作成します
-
左側のナビゲーション メニューから Certificates and Secretsを選択し、New client secretを選択します。
フィールド名 値 説明 シークレットの説明を入力します。 有効 期限 シークレットには、組織のポリシーに基づいて有効期限を設定します。DAI 統合が引き続き機能するように、このシークレットの有効期限が切れる前に新しいシークレットを生成してください。 -
Addをクリックします。
新しいシークレットの値を必ずメモしておいてください。これが見える唯一の時間です。
6. このアプリケーションの認証の仕組みを設定する
-
左側のナビゲーションから、Authentication を選択します。
-
Ridirect URI は既に事前入力されていますが、次の設定を行う必要があります。
フィールド名 値 フロントチャネルログアウトURL これを空白のままにしておきます Implicit grant and hybrid flows - アクセス トークン unchecked暗黙的な許可フローとハイブリッド フロー - ID トークン uncheckedサポートされているアカウントの種類 環境に最も適したものを選択します。 公開クライアントフローを許可する Noアプリ インスタンスのプロパティのロック 組織のポリシー要件に従って構成する -
Saveをクリックします。
7) 権限の設定
-
左側のナビゲーションメニューからAPI Permissions を選択します。
-
Add a permission をクリックします。
-
アクセス許可を要求する API として Microsoft Graph を選択します。
-
Delegated permissions を選択します。
-
Openid Permissions で、
email,offline_access,openid、profileを選択します。 -
Add permissions. を選択します。
これらのアクセス許可には同意が必要です。管理者としてログインしており、デフォルトディレクトリ内のすべてのユーザーに代わって同意する場合は、Grant admin consent for Default Directoryを選択できます。そうでない場合は、ユーザーはアプリケーションのEggplant Test(DAI) にこれらの権限が付与されることに初めて同意する必要があります。
Entra Id でのアプリケーション統合の設定
DAI インスタンス (複数可) を Entra でアプリケーションとして構成したので、Keycloak (DAI の組み込み ID およびアクセス管理プロバイダー) でアプリケーション統合を設定する必要があります。
1. 入力データ
Keycloak を設定するには、次のものが必要です。
-
Keycloak URL - これは
https://<host>:<port>/auth/の形式である必要があります (末尾のスラッシュに注意してください)、host と port は DAI のインストール時に定義された DAI サーバーのホスト名とポートです。 -
DAI のインストール時に定義されたシステム管理者のユーザー名とパスワード (Keycloak 管理者のユーザー名とパスワードとも呼ばれます)。
-
Entra IDの設定時に生成した以下の設定も必要です。
-
クライアント ID (例: Eggplant Test)
-
クライアントシークレット
-
OIDC メタデータ JSON ペイロード (下記参照)
-
ここでは、用語が混乱する可能性があります。クライアントシークレットを生成するとき、そのシークレットの ID をクライアント ID として取得したくなるかもしれません。ただし、必要なのはシークレット値のみで、クライアント ID ("アプリケーション ID" とも呼ばれます) はアプリケーションの ID であり、シークレット ID ではありません。
2. Entra ID からOIDC Metadata Documentをエクスポートします
メタデータは、Microsoft ID プラットフォーム上の OpenID Connect (OIDC) - Microsoft ID プラットフォーム で定義されているリンクからダウンロードできます。これをファイルに保存する必要があります。
3. Keycloakの設定
Eggplant Cloudをご利用の場合は、以下の手順を代行していただく必要があるため、当社のお客様 Supportまでご連絡ください。
KeycloakでSSOを有効にするには、identity_providerという名前の移行手順を実行し、KeycloakレルムでSSO統合を有効(または無効) にします。
この手順では、次の処理を行います。
- 指定したマニフェストファイルに基づいて、Keycloak で Identity Provider を作成および構成します。
- その Identity Provider をログインフローのデフォルトとして設定し、ユーザは常にそのプロバイダに転送されます。
- Realm の Themes を
eggplantではなくeggplant_readonlyを使用するように構成します。これにより、現在 Id プロバイダーによって提供されるパスワード管理などの機能が削除されます。
ステップ 1 - 環境変数 を設定する
set KC_ADMIN_USER=<keycloak_admin_user>
set KC_ADMIN_PASSWORD=<keycloak_admin_pwd>
set KEYCLOAK_URL=https://<dai_address>/auth/
set USE_LEGACY_INSTALLER=true
set IDP_CLIENT_ID=<idp_client_id>
set IDP_CLIENT_SECRET=<idp_client_secret>
上記のスクリプトの <...> で囲まれた値を、次のように Id プロバイダーの値に置き換えます。
| 変数 | 説明 |
|---|---|
<keycloak_admin_user> | DAI をインストールしたときに設定した Keycloak システム管理者のユーザー名。これは Keycloak ユーザー名とも呼ばれます。 |
<keycloak_admin_pwd> | DAI のインストール時に設定したシステム管理者のパスワード |
<dai_address> | DAI サーバーのホスト名:ポート 例: example.com:8080。 |
<idp_client_id> | Entra ID で DAI アプリケーションを構成したときに作成した ID。 |
<idp_client_secret> | Entra ID で DAI アプリケーションを設定したときに作成したシークレット。 |
この方法でコマンドラインでパスワードとシークレットを設定するのは安全ではありません。機密性の高い環境変数は、代わりに組織の優先シークレットマネージャーを使用して初期化することをお勧めします。
手順 2 - スクリプト の実行
次の手順では、DAI をデフォルトの場所 (C:\Program Files\Digital Automation Intelligence) にインストールしたことを前提としています。DAI を別の場所にインストールした場合は、以下のスクリプトの既定のパスを DAI のインストール場所に置き換えてください。
以下のスクリプトは、Windows コマンド シェル (cmd.exe) 用に記述されています。Powershell から実行するには、キャレット (^) 文字をバックティック (`) 文字に置き換える必要があります。
"C:\Program Files\Digital Automation Intelligence\python\tools\python.exe" ^
-m eggplant.iam.realm_mgmt ^
--init-file "C:\ProgramData\Eggplant\Digital Automation Intelligence\logs\keycloak\.keycloak_migration_config" ^
run ^
--procedure identity_provider ^
--realm <realm> ^
--vars IDP_ALIAS=<idp_alias> ^
--vars IDP_DISPLAY_NAME=<idp_display_name> ^
--vars IDP_METADATA_FILE=<idp_metadata_file>
上記のスクリプトの <...> で囲まれた値を、次のように Id プロバイダーの値に置き換えます。
| 用語 | 値 |
|---|---|
| <realm> | 通常はeggplant |
| <idp_alias> | このプロバイダのエイリアス名。これは、プロセスの前半で Entra ID を設定するために使用されたエイリアスです。 |
| <idp_display_name> | この Entra ID 統合のフレンドリ名で、Keycloak 管理コンソールに表示されます。 |
| <idp_metadata_file> | Entra ID からファイルにエクスポートされた OIDC JSON メタデータ ファイル。メタデータ ファイルへの絶対ファイル パスを使用することをお勧めします。 |
このプロシージャは、メッセージを JSON 形式でログに記録します。
- 手順が失敗すると、通常は 1 つ以上のスタック トレースを含む ERROR が表示されます。
- 成功した場合、最後のログエントリは、手順が正常に完了したことを示します。
エラーが発生した場合は、メッセージと結果のスタックトレースを確認してください。ご不明な点がございましたら、当社の お客様 Supportまでお問い合わせください。
この時点で、DAI SSO 統合は完了しているはずです。統合が正常に機能しているかどうかを確認するためのシナリオについては、DAI での SSO の検証 をご覧ください。
DAI インストールで SSO を無効にする場合は、DAI からの SSO 認証の削除 を参照してください。