Entra IDとSAML v2を使用したDAIでのSSOの有効化
このページでは、Security Assertion Markup Language (SAML) v2 プロトコルを使用して、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 と OIDC を使用して DAI で SSO を有効にする を参照してください。
このページでは、Keycloak を構成するための具体的な手順と、Entra ID を構成する方法の例を示します。組織ごとに ID 管理の構成は異なり、誤った構成は重大な結果を招く可能性があるため、最終的な設計と展開計画は独自の仕様にする必要があります。Entra ID の構成がここに示した例と互換性がない場合は、カスタマー サポート に連絡して、サポート方法を確認してください。
前提条件
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管理者、ユーザー、およびビューアの役割を表すことができます。または、4. 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 | - エンドユーザーのワークステーションは、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) OIDC を使用して、アプリケーションを Entra ID で公開します
次に、次のように Entra ID でアプリケーションを構成し、SAML v2 プロトコルを使用して公開します。
-
左側のナビゲーションメニューから Single sign-onを選択します。
-
Change single sign-on mode > SAML を選択します。
-
引き続き Single sign-on Basic SAML Configuration > Edit を選択し、次の情報を入力します。
フィールド名 値 識別子 (エンティティ ID) https://<dai_domain>/auth/realms/egglant/<idp_alias>'<br/>where:<br/>'<dai_domain>は、DAI(およびKeycloak) がインストールされているドメインの名前です。<idp_alias>は、DAI の Entra ID ID プロバイダー設定に割り当てられたエイリアス名です。これはまだ作成されていません。したがって、ここで何を選択するかを覚えておき、このプロセスの後半でDAIを設定するときにそれを使用する必要があります。この例では、adという名前のエイリアスを示しています。応答URL(アサーションコンシューマサービスURL) https://<dai_domain>/auth/realms/eggplant/broker/<idp_alias>/endpoint
where:<dai_domain>と<idp_alias>は、上記の entity ID で定義されているものと同じです。
- 1つしかないため、Defaultチェックボックスについて心配する必要はありません。サインオンURL 不要 リレーのstate 不要 ログアウトURL 不要
SAML 証明書 を構成する
デフォルトでは、Entra IDはエンタープライズアプリケーションの作成時にSign SAML AssertionにSHA-256証明書を作成するため、変更を加える必要はありません。
要求 の構成
次の手順に従って、要求を構成します。
-
Single sign-onセクションから、 Attributes & Claims を選択し、Editを選択します。
-
Add new claim を選択し、次の情報を入力します。
新しい請求フィールドを追加 値 名前 `名前識別子 Namespace http://schemas.xmlsoap.org/ws/2005/05/identity/claims名前識別子の形式 未指定ソース 属性ソース属性 user.userprincipalname'(Source Attribute ドロップダウンを使用して、ソース属性を選択します。これらを入力すると、AD は引用符で囲まれた文字列リテラルとして扱います。連鎖条件 修正する必要はない高度な SAML 要求オプション > JWT トークンで要求を公開する unchecked -
Saveをクリックします。
-
上記の手順を繰り返して、次の表に示すように、同じソースと名前空間で、Name と Source Attributes が異なる要求をさらに作成します。
| フィールド名 | ソース属性 |
|---|---|
メールアドレス | user.mail |
givenname | user.givenname |
name | user.userprincipalname |
surname | user.surname |
3. アプリの登録 を設定します
-
Entra IDランディングページに戻り、左側のナビゲーションメニューからApp Registrationsを選択します。
-
All applications を選択し、DAI 用に作成したアプリケーション (Eggplant Test など) を検索します。
-
アプリケーションが見つかったら、それをクリックして詳細を表示します。
-
マニフェストを修正するには、左側のナビゲーション メニューから Manifest を選択し、JSON で次の属性が追加または更新されていることを確認します。:
"api": {..."requestedAccessTokenVersion": 2...}"tags": ["WindowsAzureActiveDirectoryIntegratedApp""WindowsAzureActiveDirectoryCustomSinglesSignOnApplication"] -
Saveをクリックします。
4) アプリケーションロールの作成
次の手順では、Entra ID で DAI Viewer、User、および Administrator アプリケーション ロールを作成する方法について説明します。Entra ID でのアプリケーション ロールの作成の詳細については、アプリ ロールを追加し、トークンから取得する - Microsoft ID プラットフォーム を参照してください。
-
左側のナビゲーションから App Rolesを選択し、 Create app role を選択します。
-
DAI Viewer ロールに関する情報を次のように入力します。
フィールド名 値 表示名 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 をクリックします。
5) このアプリケーションの認証の仕組みを設定する
DAI アプリケーションの認証の仕組みを設定します。
-
左側のナビゲーションから、Authentication を選択します。
-
Redirect URI は既に事前入力されていますが、次の設定を行う必要があります。
フィールド名 値 フロントチャネルログアウトURL これは空白のままにしておきます。 Implicit grant and hybrid flows - アクセス トークン unchecked暗黙的な許可フローとハイブリッド フロー - ID トークン uncheckedサポートされているアカウントの種類 環境に最も適したものを選択します。 公開クライアントフローを許可する Noアプリ インスタンスのプロパティのロック 組織のポリシー要件に従って構成する -
Save. をクリックします。
Keycloak でのアプリケーション統合の設定
DAI インスタンス (複数可) を Entra でアプリケーションとして構成したので、Keycloak (DAI の組み込み ID およびアクセス管理プロバイダー) でアプリケーション統合を設定する必要があります。
1. 入力データ
Keycloak を設定するには、次のものが必要です。
-
Keycloak URL - これは
https://<host>:<port>/auth/(末尾のスラッシュに注意) の形式である必要があります。ここで、ホストとポートは、DAI のインストール時に定義された DAI サーバーのホスト名とポートです。 -
DAI のインストール時に定義されたシステム管理者のユーザー名とパスワード (Keycloak 管理者のユーザー名とパスワードとも呼ばれます)。
-
Entra IDの設定時に生成した以下の設定も必要です。
-
OIDC メタデータ JSON ペイロード (下記参照)
-
アプリケーションのエンティティ ID
-
Entra ID からOIDC Metadata Documentをエクスポートします
-
Entra ID内で、Enterprise Applicationsの下のアプリケーションに移動し、左側のナビゲーションからシングルサインオンを選択します。SAML Certificates で、App Federation Metadata URL の設定を見つけます。
-
その値をコピーし、この URL を使用して XML メタデータ ファイルをダウンロードして保存します。通常、URL の形式は次のとおりです。
https://login.microsoftonline.com/{tenant_id}/federationmetadata/2007-06/federationmetadata.xml?appid={application_id} -
このファイルをダウンロードして保存します。
警告このファイルをダウンロードして保存します。
2) Keycloakの設定
Eggplant Cloudをご利用の場合は、以下の手順を代行していただく必要があるため、当社のお客様 Support までご連絡ください。
KeycloakでSSOを有効にするには、 identity_providerという名前の移行手順を実行し、KeycloakレルムでSSO統合を有効(または無効) にします。
この手順では、次の処理を行います。
-
指定したマニフェストファイルに基づいて、Keycloak で Identity Provider を作成および構成します。
-
その Identity Provider をログインフローのデフォルトとして設定し、ユーザは常にそのプロバイダに転送されます。
-
eggplant,ではなくeggplant_readonlyを使用するように Realm の Themes を設定します。これにより、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
上記のスクリプトの<...> で囲まれた値を、次のように Id プロバイダーの値に置き換えます。:
| 変数 | 説明 |
|---|---|
<keycloak_admin_user> | DAI のインストール時に設定したシステム管理者のユーザー名。これは、Keycloak ユーザー名とも呼ばれます。 |
<keycloak_admin_pwd> | DAI のインストール時に設定したシステム管理者のパスワード。 |
<dai_address> | ホスト名:DAIサーバーのポート(例: example.com:8080)。 |
この方法でコマンドラインでパスワードとシークレットを設定するのは安全ではありません。機密性の高い環境変数は、代わりに組織の優先シークレットマネージャーを使用して初期化することをお勧めします。
手順 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> ^
--vars IDP_ROLE_SOURCE_CLAIM=http://schemas.microsoft.com/ws/2008/06/identity/claims/role ^
--vars IDP_PROTOCOL=saml ^
--vars IDP_PROVIDER_TYPE=saml ^
--vars IDP_ENTITY_ID=<entity_id>
上記のスクリプトの <...> で囲まれた値を、次のように Id プロバイダーの値に置き換えます。
| 用語 | 値 |
|---|---|
| <realm> | 通常はeggplant |
| <idp_alias> | このプロバイダのエイリアス名。これは、プロセスの前半で Entra ID を設定するために使用されたエイリアスです。 |
| <idp_display_name> | この Entra ID 統合のフレンドリ名で、Keycloak 管理コンソールに表示されます。 |
| <idp_metadata_file> | Entra ID からファイルにエクスポートされた OIDC JSON メタデータ ファイル。メタデータ ファイルへの絶対ファイル パスを使用することをお勧めします。 |
| <entity_id> | Entra ID のエンティティ ID (証明書利用者信頼 IDとも呼ばれます)。 |
このプロシージャは、メッセージを JSON 形式でログに記録します。
- 手順が失敗すると、通常は 1 つ以上のスタック トレースを含む ERROR が表示されます。
- 成功した場合、最後のログエントリは、手順が正常に完了したことを示します。
エラーが発生した場合は、メッセージと結果のスタックトレースを確認してください。ご不明な点がございましたら、当社の お客様 Support までお問い合わせください。
この時点で、DAI SSO 統合は完了しているはずです。統合が正常に機能しているかどうかを確認するためのシナリオについては、DAI での SSO の検証 をご覧ください。
DAI インストールで SSO を無効にする場合は、DAI からの SSO 認証の削除 を参照してください。