ホーム領域検出を使用してサインインの動作を構成する
この記事では、ホーム領域検出 (HRD) ポリシーを使用してフェデレーション ユーザーのために Microsoft Entra 認証の動作を構成することの概要を示します。 自動高速化サインインを使用して、ユーザー名入力画面をスキップし、自動的にフェデレーション サインイン エンドポイントにユーザーを転送することを取り上げます。 HRD ポリシーの詳細については、「ホーム領域検出」の記事を参照してください。
自動高速化サインイン
一部の組織では、その Microsoft Entra テナント内のドメインを別の ID プロバイダー (IDP) (ユーザー認証用の Active Directory フェデレーション サービス (ADFS) など) とフェデレーションするように構成します。 ユーザーがアプリケーションにサインインすると、最初に Microsoft Entra のサインイン ページが表示されます。 ユーザー プリンシパル名 (UPN) を入力した後、フェデレーション ドメイン内にいると、そのドメインにサービスを提供している IDP のサインイン ページが表示されます。 状況によっては、管理者は特定のアプリケーションにサインインしたユーザーに対してサインイン ページを表示したい場合があります。 その結果、ユーザーは最初の Microsoft Entra ID ページをスキップできます。 このプロセスは、"サインイン自動高速化" と呼ばれます。
クラウド対応の資格情報 (SMS サインインや FIDO キーなど) を持つフェデレーション ユーザーの場合、サインインの自動高速化を防ぐ必要があります。 HRD でドメイン ヒントを使用しないようにする方法については、「自動高速化サインインを無効にする」を参照してください。
重要
2023 年 4 月以降、自動高速化またはスマートリンクを使用する組織では、サインイン UI に追加された新しい画面が表示される可能性があります。 [ドメインの確認] ダイアログと呼ばれるこの画面は、セキュリティ強化に対する Microsoft の一般的なコミットメントの一部であり、ユーザーはサインイン先のテナントのドメインを確認する必要があります。 [ドメインの確認] ダイアログが表示されたが、一覧にテナント ドメインが認識されない場合は、認証フローをキャンセルし、IT 管理者にお問い合わせください。
詳細については、「ドメインの確認ダイアログ」を参照してください。
前提条件
Microsoft Entra ID でアプリケーションのために HRD ポリシーを構成するには、以下が必要です。
- アクティブなサブスクリプションが含まれる Azure アカウント。 まだアカウントがない場合は、無料でアカウントを作成することができます。
- 次のいずれかのロール: アプリケーション管理者、クラウド アプリケーション管理者、サービス プリンシパルの所有者。
- Azure AD PowerShell コマンドレットの最新のプレビュー。
アプリケーションに HRD ポリシーを設定する
Azure AD PowerShell コマンドレットを使って次のようなシナリオを設定する手順を示します。
Microsoft Graph を使用して、次のようないくつかのシナリオについて説明します。
1 つのフェデレーション ドメインを持つテナント内でアプリケーションの自動高速化を実行するように HRD ポリシーを設定する。
テナント用に確認された複数のドメインのいずれかに対してアプリケーションの自動高速化を実行するように HRD ポリシーを設定する。
フェデレーション ユーザー用の Microsoft Entra ID に対して、レガシ アプリケーションでユーザー名とパスワードの認証を直接実行できるように HRD ポリシーを設定する。
ポリシーが構成されているアプリケーションを一覧表示する。
以下の例では、Microsoft Entra ID 内のアプリケーション サービス プリンシパルを対象に、HRD ポリシーを作成、更新、リンク、および削除します。
Note
Azure AD および MSOnline PowerShell モジュールは、2024 年 3 月 30 日の時点で非推奨となります。 詳細については、非推奨の最新情報を参照してください。 この日以降、これらのモジュールのサポートは、Microsoft Graph PowerShell SDK への移行支援とセキュリティ修正プログラムに限定されます。 非推奨になるモジュールは、2025 年 3 月 30 日まで引き続き機能します。
Microsoft Entra ID (旧称 Azure AD) を使用するには、Microsoft Graph PowerShell に移行することをお勧めします。 移行に関する一般的な質問については、「移行に関する FAQ」を参照してください。 注: バージョン 1.0.x の MSOnline では、2024 年 6 月 30 日以降に中断が発生する可能性があります。
開始する前に、Connect コマンドを実行して、管理者アカウントで Microsoft Entra ID にサインインします。
Connect-AzureAD -Confirm
次のコマンドを実行して、組織内のすべてのポリシーを表示します。
Get-AzureADPolicy
何も返されない場合は、テナント内にポリシーが作成されていないことを意味します。
HRD ポリシーを作成する
この例では、アプリケーションに割り当てるときに次のいずれかを行うポリシーを作成します。
- テナント内のドメインが 1 つのみのときに、ユーザーがアプリケーションにサインインするときに、フェデレーション ID プロバイダーのサインイン画面への移動を自動高速化します。
- テナント内にフェデレーション ドメインが複数ある場合に、フェデレーション ID プロバイダーのサインイン画面への移動を自動高速化します。
- ポリシー割り当て先のアプリケーションのフェデレーション ユーザー用の Microsoft Entra ID に対して、ユーザー名とパスワードによる非対話型のサインインを直接行えるようにする。
次のポリシーは、テナント内のドメインが 1 つのみのときに、ユーザーがアプリケーションにサインインするときに、フェデレーション ID プロバイダーのサインイン画面への移動を自動高速化します。
New-AzureADPolicy
-Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AccelerateToFederatedDomain`":true}}") -DisplayName BasicAutoAccelerationPolicy
-Type HomeRealmDiscoveryPolicy
POST /policies/homeRealmDiscoveryPolicies
"HomeRealmDiscoveryPolicy": {
"AccelerateToFederatedDomain": true
}
次のポリシーは、テナント内にフェデレーション ドメインが複数あるときに、フェデレーション ID プロバイダーのサインイン画面への移動を自動高速化します。 アプリケーションのユーザーを認証するフェデレーション ドメインが複数ある場合は、自動高速化するドメインを指定する必要があります。
New-AzureADPolicy
-Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AccelerateToFederatedDomain`":true, `"PreferredDomain`":`"federated.example.edu`"}}")
-DisplayName MultiDomainAutoAccelerationPolicy
-Type HomeRealmDiscoveryPolicy
POST /policies/homeRealmDiscoveryPolicies
"HomeRealmDiscoveryPolicy": {
"AccelerateToFederatedDomain": true,
"PreferredDomain": [
"federated.example.edu"
]
}
次のポリシーでは、特定のアプリケーションで Microsoft Entra ID に対し、ユーザー名とパスワードを使用してフェデレーション ユーザーが直接認証できるようにします。
New-AzureADPolicy
-Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AllowCloudPasswordValidation`":true}}")
-DisplayName EnableDirectAuthPolicy
-Type HomeRealmDiscoveryPolicy
POST /policies/homeRealmDiscoveryPolicies
"EnableDirectAuthPolicy": {
"AllowCloudPasswordValidation": true
}
新しいポリシーを表示し、その ObjectId を取得するには、次のコマンドを実行します。
Get-AzureADPolicy
作成した HRD ポリシーを適用するには、複数のアプリケーション サービス プリンシパルに HRD ポリシーを割り当てる必要があります。
ポリシーに割り当てるサービス プリンシパルを見つける
ポリシーを割り当てるサービス プリンシパルの ObjectID が必要となります。 サービス プリンシパルの ObjectID を検索するには、複数の方法があります。
Microsoft Entra 管理センターを使用することも、Microsoft Graph に対してクエリを実行することもできます。 また、Graph エクスプローラー ツールに移動して Microsoft Entra アカウントにサインインし、組織のすべてのサービス プリンシパルを表示することもできます。
PowerShell を使用しているため、次のコマンドレットを使用してサービス プリンシパルとその ID を一覧表示できます。
Get-AzureADServicePrincipal
サービス プリンシパルにポリシーを割り当てる
自動高速化を構成するアプリケーションのサービス プリンシパルの ObjectID を入手した後、次のコマンドを実行します。 このコマンドは、手順 1 で作成した HRD ポリシーを、手順 2 で取得したサービス プリンシパルに関連付けます。
Add-AzureADServicePrincipalPolicy
-Id <ObjectID of the Service Principal>
-RefObjectId <ObjectId of the Policy>
このコマンドは、ポリシーを追加する各サービス プリンシパルに対して繰り返し実行できます。
アプリケーションに HomeRealmDiscovery ポリシーが既に割り当てられている場合は、さらにポリシーを追加することはできません。 その場合は、アプリケーションに割り当てられている HRD ポリシーの定義を変更して、別のパラメーターを追加します。
HRD ポリシーが割り当てられているサービス プリンシパルを確認する
HRD ポリシーがどのアプリケーションに構成されているかを確認するには、Get-AzureADPolicyAppliedObject コマンドレットを使用します。 そして、確認するポリシーの ObjectID を渡します。
Get-AzureADPolicyAppliedObject -id <ObjectId of the Policy>
アプリケーションを実行して、新しいポリシーが機能していることを確認します。
HRD ポリシーが構成されているアプリケーションを一覧表示する
組織内で作成されたすべてのポリシーを一覧表示する
Get-AzureADPolicy
割り当てを一覧表示するポリシーの ObjectID をメモします。
ポリシーが割り当てられているサービス プリンシパルを一覧表示する
Get-AzureADPolicyAppliedObject -id <ObjectId of the Policy>
アプリケーションから HRD ポリシーを削除する
ObjectID を取得する
先述の例を使って、ポリシーの ObjectID と、ポリシーを削除するアプリケーション サービス プリンシパルのオブジェクト ID を取得します。
アプリケーション サービス プリンシパルからポリシーの割り当てを削除する
Remove-AzureADServicePrincipalPolicy -id <ObjectId of the Service Principal> -PolicyId <ObjectId of the policy>
ポリシーが割り当てられているサービス プリンシパルを一覧表示して、削除を確認する
Get-AzureADPolicyAppliedObject -id <ObjectId of the Policy>
Graph エクスプローラーを使用したポリシーの構成
Microsoft Graph エクスプローラーに移動します。
前提条件セクションに記載されているいずれかのロールを使用してサインインします。
Policy.ReadWrite.ApplicationConfiguration
アクセス許可への同意を付与します。ホーム領域検出ポリシーを使用して、新しいポリシーを作成します。
新しいポリシーを POST するか、既存のポリシーを更新する場合は PATCH します。
PATCH /policies/homeRealmDiscoveryPolicies/{id} { "definition": [ "{\"HomeRealmDiscoveryPolicy\": {\"AccelerateToFederatedDomain\":true, \"PreferredDomain\":\"federated.example.edu\", \"AlternateIdLogin\":{\"Enabled\":true}}}" ], "displayName": "Home Realm Discovery auto acceleration", "isOrganizationDefault": true }
新しいポリシーを表示するには、次のクエリを実行します。
GET /policies/homeRealmDiscoveryPolicies/{id}
新しいポリシーをアプリケーションに割り当てるには、次を行います。
POST /servicePrincipals/{id}/homeRealmDiscoveryPolicies/$ref
または、
POST /servicePrincipals(appId='{appId}')/homeRealmDiscoveryPolicies/$ref
ポリシーが割り当てられているサービス プリンシパルを一覧表示する
GET /policies/homeRealmDiscoveryPolicies/{ObjectId of the policy}/appliesTo
作成した HRD ポリシーを削除するには、次のクエリを実行します。
DELETE /policies/homeRealmDiscoveryPolicies/{id}
サービス プリンシパルからポリシーの割り当てを削除する
DELETE /servicePrincipals/{id}/homeRealmDiscoveryPolicies/{policyId}/$ref
または、
DELETE /servicePrincipals(appId='{appId}')/homeRealmDiscoveryPolicies/{policyId}/$ref
ポリシーが割り当てられているサービス プリンシパルを一覧表示して、削除を確認する
GET /policies/homeRealmDiscoveryPolicies/{ObjectId of the policy}/appliesTo