ホーム領域検出を使用してサインインの動作を構成する

この記事では、ホーム領域検出 (HRD) ポリシーを使用してフェデレーション ユーザーのために Azure Active Directory (Azure AD) 認証の動作を構成することの概要を示します。 自動高速化を使用して、ユーザー名入力画面をスキップし、自動的にフェデレーション ログイン エンドポイントにユーザーを転送することを取り上げます。 HRD ポリシーの詳細については、「ホーム領域検出」を参照してください。

クラウド対応の資格情報 (SMS サインインや FIDO キーなど) を持つフェデレーション ユーザーの場合、サインインの自動高速化を防ぐ必要があります。 HRD でドメイン ヒントを使用しないようにする方法については、「自動高速化サインインを無効にする」を参照してください。

前提条件

Azure AD でアプリケーションのために HRD ポリシーを構成するには、以下が必要です。

  • アクティブなサブスクリプションが含まれる Azure アカウント。 まだアカウントがない場合は、無料でアカウントを作成することができます。
  • 次のいずれかのロール: グローバル管理者、クラウド アプリケーション管理者、アプリケーション管理者、またはサービス プリンシパルの所有者。
  • Azure AD PowerShell コマンドレットの最新のプレビュー。

アプリケーションに HRD ポリシーを設定する

Azure AD PowerShell コマンドレットを使って次のようなシナリオを設定する手順を示します。

Microsoft Graph を使用して、次のようないくつかのシナリオについて説明します。

  • 1 つのフェデレーション ドメインを持つテナント内でアプリケーションの自動高速化を実行するように HRD ポリシーを設定する。

  • テナント用に確認された複数のドメインのいずれかに対してアプリケーションの自動高速化を実行するように HRD ポリシーを設定する。

  • フェデレーション ユーザー用の Azure AD に対して、レガシ アプリケーションがユーザー名とパスワードの認証を直接実行できるように HRD ポリシーを設定する。

  • ポリシーが構成されているアプリケーションを一覧表示する。

以下の例では、Azure AD 内のアプリケーション サービス プリンシパルを対象に、HRD ポリシーを作成、更新、リンク、および削除します。

  1. 開始する前に、Connect コマンドを実行して、管理者アカウントで Azure AD にサインインします。

    Connect-AzureAD -Confirm
    
  2. 次のコマンドを実行して、組織内のすべてのポリシーを表示します。

    Get-AzureADPolicy
    

何も返されない場合は、テナント内にポリシーが作成されていないことを意味します。

HRD ポリシーを作成する

この例では、アプリケーションに割り当てられたときに以下を行うポリシーを作成します。

  • テナント内のドメインが 1 つのみのときに、ユーザーがアプリケーションにサインインするときに、フェデレーション ID プロバイダーのサインイン画面への移動を自動高速化する。
  • テナント内にフェデレーション ドメインが複数ある場合に、フェデレーション ID プロバイダーのサインイン画面への移動を自動高速化する。
  • ポリシー割り当て先のアプリケーションのフェデレーション ユーザーが Azure AD に対して、ユーザー名とパスワードによる非対話型のサインインを直接行えるようにする。

次のポリシーは、テナント内のドメインが 1 つのみのときに、ユーザーがアプリケーションにサインインするときに、フェデレーション ID プロバイダーのサインイン画面への移動を自動高速化します。

New-AzureADPolicy -Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AccelerateToFederatedDomain`":true}}") -DisplayName BasicAutoAccelerationPolicy -Type HomeRealmDiscoveryPolicy
"HomeRealmDiscoveryPolicy": {
"AccelerateToFederatedDomain": true
}

次のポリシーは、テナント内にフェデレーション ドメインが複数あるときに、フェデレーション ID プロバイダーのサインイン画面への移動を自動高速化します。 アプリケーションのユーザーを認証するフェデレーション ドメインが複数ある場合は、自動高速化するドメインを指定する必要があります。

New-AzureADPolicy -Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AccelerateToFederatedDomain`":true, `"PreferredDomain`":`"federated.example.edu`"}}") -DisplayName MultiDomainAutoAccelerationPolicy -Type HomeRealmDiscoveryPolicy
"HomeRealmDiscoveryPolicy": {
"AccelerateToFederatedDomain": true
"PreferredDomain": ["federated.example.edu"]
}

次のポリシーは、特定のアプリケーションで Azure AD に対し、ユーザー名とパスワードを使用してフェデレーション ユーザーが直接認証できるようにします。


"EnableDirectAuthPolicy": {
"AllowCloudPasswordValidation": true
}

New-AzureADPolicy -Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AllowCloudPasswordValidation`":true}}") -DisplayName EnableDirectAuthPolicy -Type HomeRealmDiscoveryPolicy

新しいポリシーを表示し、その ObjectId を取得するには、次のコマンドを実行します。

Get-AzureADPolicy

作成した HRD ポリシーを適用するには、複数のアプリケーション サービス プリンシパルに HRD ポリシーを割り当てる必要があります。

ポリシーを割り当てるサービス プリンシパルを見つける

ポリシーを割り当てるサービス プリンシパルの ObjectID が必要となります。 サービス プリンシパルの ObjectID を検索するには、複数の方法があります。

Azure portal を使用することも、Microsoft Graph のクエリを実行することもできます。 また、Graph エクスプローラー ツールに移動して Azure AD アカウントにサインインし、組織のすべてのサービス プリンシパルを表示することもできます。

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 ポリシーが構成されているアプリケーションを一覧表示する

  1. 組織内で作成されたすべてのポリシーを一覧表示する

    Get-AzureADPolicy
    

割り当てを一覧表示するポリシーの ObjectID をメモします。

  1. ポリシーが割り当てられているサービス プリンシパルを一覧表示する

    Get-AzureADPolicyAppliedObject -id <ObjectId of the Policy>
    

アプリケーションから HRD ポリシーを削除する

  1. ObjectID を取得する

先述の例を使って、ポリシーの ObjectID と、ポリシーを削除するアプリケーション サービス プリンシパルのオブジェクト ID を取得します。

  1. アプリケーション サービス プリンシパルからポリシーの割り当てを削除する

    Remove-AzureADServicePrincipalPolicy -id <ObjectId of the Service Principal>  -PolicyId <ObjectId of the policy>
    
  2. ポリシーが割り当てられているサービス プリンシパルを一覧表示して、削除を確認する

    Get-AzureADPolicyAppliedObject -id <ObjectId of the Policy>
    

Graph エクスプローラーを使用したポリシーの構成

Microsoft Graph を使用して、HRD ポリシーを設定します。 このポリシーの作成方法については、「homeRealmDiscoveryPolicy リソースの種類」を参照してください。

Microsoft Graph エクスプローラーに移動します。

  1. [アクセス許可の変更] タブで、Policy.ReadWrite.ApplicationConfiguration アクセス許可を付与します。

  2. URL は https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies を使用します。

  3. 新しいポリシーをこの URL に POST します。または、既存のものを上書きする場合は /policies/homerealmdiscoveryPolicies/{policyID} に PATCH します。

  4. POST または PATCH の内容:

    {
        "definition": [
        "{\"HomeRealmDiscoveryPolicy\":
        {\"AccelerateToFederatedDomain\":true,
        \"PreferredDomain\":\"federated.example.edu\",
        \"AlternateIdLogin\":{\"Enabled\":true}}}"
    ],
        "displayName": "Home Realm Discovery auto acceleration",
        "isOrganizationDefault": true
    }
    
  5. 新しいポリシーを表示し、その ObjectID を取得するには、次のクエリを実行します。

    GET policies/homeRealmDiscoveryPolicies
    
  6. 作成した HRD ポリシーを削除するには、次のクエリを実行します。

    DELETE /policies/homeRealmDiscoveryPolicies/{policy objectID}
    

次の手順

サインインの自動高速化を防止する