次の方法で共有


サインインの自動高速化を構成する

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

前提条件

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

  • アクティブなサブスクリプションが含まれる Azure アカウント。 まだアカウントがない場合は、無料でアカウントを作成することができます。
  • アプリケーション管理者ロール

自動高速化サインイン

一部の組織では、その Microsoft Entra テナント内のドメインを別の ID プロバイダー (IDP) (ユーザー認証用の Active Directory フェデレーション サービス (ADFS) など) とフェデレーションするように構成します。 ユーザーがアプリケーションにサインインすると、最初に Microsoft Entra のサインイン ページが表示されます。 ユーザー プリンシパル名 (UPN) を入力した後、フェデレーション ドメイン内にいると、そのドメインにサービスを提供している IDP のサインイン ページが表示されます。 状況によっては、管理者は特定のアプリケーションにサインインしたユーザーに対してサインイン ページを表示したい場合があります。 その結果、ユーザーは最初の Microsoft Entra ID ページをスキップできます。 このプロセスは、"サインイン自動高速化" と呼ばれます。

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

重要

2023 年 4 月以降、自動高速化またはスマートリンクを使用する組織では、サインイン UI に追加された新しい画面が表示される可能性があります。 [ドメインの確認] ダイアログと呼ばれるこの画面は、セキュリティ強化に対する Microsoft の一般的なコミットメントの一部であり、ユーザーはサインイン先のテナントのドメインを確認する必要があります。 [ドメインの確認] ダイアログが表示されたが、一覧にテナント ドメインが認識されない場合は、認証フローをキャンセルし、IT 管理者にお問い合わせください。

詳細については、「ドメインの確認ダイアログ」を参照してください。

Microsoft Graph PowerShell を使用して HRD ポリシーを設定する

Microsoft Graph PowerShell コマンドレットを使用して、次のようないくつかのシナリオについて説明します。

  • 1 つのフェデレーション ドメインを持つテナント内でアプリケーションの自動高速化を実行するように HRD ポリシーを設定する。
  • テナント用に確認された複数のドメインのいずれかに対してアプリケーションの自動高速化を実行するように HRD ポリシーを設定する。
  • フェデレーション ユーザー用の Microsoft Entra ID に対して、レガシ アプリケーションでユーザー名とパスワードの認証を直接実行できるように HRD ポリシーを設定する。
  • ポリシーが構成されているアプリケーションを一覧表示する。

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

  1. 開始する前に、Connect コマンドを実行して、少なくとも アプリケーション管理者 ロールを使用して Microsoft Entra ID にサインインします。

    connect-MgGraph -scopes "Policy.Read.All"
    
  2. 次のコマンドを実行して、組織内のすべてのポリシーを表示します。

    Get-MgPolicyHomeRealmDiscoveryPolicy -Property Id, displayName
    

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

Microsoft Graph PowerShell を使用して HRD ポリシーを作成する

この例では、アプリケーションに割り当てるときに次のいずれかを行うポリシーを作成します。

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

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

  1. Connect コマンドを実行して、少なくとも アプリケーション管理者 ロールを持つ Microsoft Entra ID にサインインします。

    connect-MgGraph -scopes "Policy.ReadWrite.ApplicationConfiguration"
    
    
  2. 次のコマンドを実行して、新しい HRD ポリシーを作成します。

    # Define the parameters for the policy 
    $params = @{
        definition = @(
        '{"HomeRealmDiscoveryPolicy":{
        "AccelerateToFederatedDomain":true,
        }
    }'
    )
    displayName = "BasicAutoAccelerationPolicy"
    isOrganizationDefault = $true
    } 
    # Create a new Home Realm Discovery Policy
    New-MgPolicyHomeRealmDiscoveryPolicy -BodyParameter $params 
    

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

connect-MgGraph -scopes "Policy.ReadWrite.ApplicationConfiguration"

# Define the parameters for the New-MgPolicyHomeRealmDiscoveryPolicy cmdlet
$params = @{
	definition = @(
	'{"HomeRealmDiscoveryPolicy":{
	"AccelerateToFederatedDomain":true,
	"PreferredDomain":"federated.example.edu"
	}}'
)
displayName = "MultiDomainAutoAccelerationPolicy"
isOrganizationDefault = $true

}

# Create the new policy
New-MgPolicyHomeRealmDiscoveryPolicy -BodyParameter $params

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


connect-MgGraph -scopes "Policy.ReadWrite.ApplicationConfiguration"

# Define the parameters for the New-MgPolicyHomeRealmDiscoveryPolicy cmdlet  
$params = @{
	definition = @(
	'{"HomeRealmDiscoveryPolicy":{
	 "AllowCloudPasswordValidation":true
     }
   }'
)
displayName = "EnableDirectAuthPolicy"
}

New-MgPolicyHomeRealmDiscoveryPolicy -BodyParameter $params  

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

    Get-MgPolicyHomeRealmDiscoveryPolicy -Property Id, displayName

HRD ポリシーを作成した後に適用するには、複数のサービス プリンシパルに割り当てることができます。

Microsoft Graph PowerShell を使用してポリシーを割り当てるサービス プリンシパルを見つける

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

Microsoft Entra 管理センターを使用できます。 このオプションの使用:

  1. アイデンティティ>アプリケーション>エンタープライズアプリケーション>すべてのアプリケーションを閲覧します。
  2. 検索ボックスに既存のアプリケーションの名前を入力し、検索結果からアプリケーションを選択します。 アプリケーションのオブジェクト ID をコピーします。

Microsoft Graph PowerShell を使用しているため、次のコマンドレットを実行して、サービス プリンシパルとその ID を一覧表示します。

connect-MgGraph -scopes "Application.Read.All"
Get-MgServicePrincipal

Microsoft Graph PowerShell を使用してサービス プリンシパルにポリシーを割り当てる

自動高速化を構成するアプリケーションのサービス プリンシパルの ObjectID を入手した後、次のコマンドを実行します。 このコマンドは、前のセクションで見たサービス プリンシパルに作成した HRD ポリシーを関連付けます。

    connect-MgGraph -scopes "Policy.ReadWrite.ApplicationConfiguration", "Application.ReadWrite.All"

# Define the parameters for the New-MgServicePrincipalHomeRealmDiscoveryPolicy cmdlet  
$assignParams = @{
	"@odata.id" = "https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies/<policyId>"
}

New-MgServicePrincipalHomeRealmDiscoveryPolicyByRef -ServicePrincipalId $servicePrincipalId -BodyParameter $assignParams

このコマンドは、ポリシーを追加する各サービス プリンシパルに対して繰り返し実行できます。

アプリケーションにホーム領域検出ポリシーが既に割り当てられている場合、2 つ目のポリシーを追加することはできません。 その場合は、アプリケーションに割り当てられている HRD ポリシーの定義を変更して、別のパラメーターを追加します。

Microsoft Graph PowerShell を使用して HRD ポリシーが割り当てられているサービス プリンシパルを確認する

次のコマンドを実行して、ポリシーが割り当てられているサービス プリンシパルを一覧表示します。

Get-MgPolicyHomeRealmDiscoveryPolicyApplyTo -HomeRealmDiscoveryPolicyId "<ObjectId of the Policy>"
 # Replace with the actual ObjectId of the Policy 

アプリケーションのサインイン エクスペリエンスをテストして、新しいポリシーが動作していることを確認します。

Microsoft Graph を使用して HRD ポリシーを設定する

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

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

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

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

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

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

  1. 開始する前に、Microsoft Graph エクスプローラー ウィンドウにアクセスします。

  2. 少なくとも アプリケーション管理者 ロールでサインインします。

  3. Policy.Read.All アクセス許可への同意を付与します。

  4. 次の API 呼び出しを実行して、組織内のすべてのポリシーを表示します。

    GET https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies
    

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

Microsoft Graph を使用して HRD ポリシーを作成する

この例では、アプリケーションに割り当てるときに次のいずれかを行うポリシーを作成します。

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

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

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

  1. 少なくとも アプリケーション管理者 ロールでサインインします。

  2. Policy.ReadWrite.ApplicationConfiguration アクセス許可への同意を付与します。

  3. 新しいポリシーを POST するか、既存のポリシーを更新する場合は PATCH します。

    POST https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies  
    
    {  
        "definition": [  
            "{\"HomeRealmDiscoveryPolicy\":{\"AccelerateToFederatedDomain\":true}}"  
        ],  
        "displayName": "BasicAutoAccelerationPolicy",
        "isOrganizationDefault": true 
    } 
    

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

POST https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies  

{  
    "definition": [  
        "{\"HomeRealmDiscoveryPolicy\":{\"AccelerateToFederatedDomain\":true,\"PreferredDomain\":\"federated.example.edu\"}}"  
    ],  
    "displayName": "MultiDomainAutoAccelerationPolicy",
    "isOrganizationDefault": true 

}

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

POST https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies  

{  
    "definition": [  
        "{\"HomeRealmDiscoveryPolicy\":{\"AllowCloudPasswordValidation\":true}}"  
    ],  
    "displayName": "EnableDirectAuthPolicy"  
}  

新しいポリシーを表示し、その ObjectIDを取得するには、次の API 呼び出しを実行します。

    GET https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies

HRD ポリシーを作成した後に適用するには、複数のサービス プリンシパルに割り当てることができます。

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

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

Microsoft Entra 管理センターを使用できます。 このオプションの使用:

  1. [ID]>[アプリケーション]>[エンタープライズ アプリケーション]>[すべてのアプリケーション] に移動します。

  2. 検索ボックスに既存のアプリケーションの名前を入力し、検索結果からアプリケーションを選択します。 アプリケーションのオブジェクト ID をコピーします。

    Microsoft Graph エクスプローラーを使用しているため、次の要求を実行して、サービス プリンシパルとその ID を一覧表示します。

    GET https://graph.microsoft.com/v1.0/servicePrincipals  
    

Microsoft Graph を使用してサービス プリンシパルにポリシーを割り当てる

自動高速化を構成するアプリケーションのサービス プリンシパルの ObjectID を取得したら、次の API cal を実行します。この API 呼び出しは、作成した HRD ポリシーを、前のセクションで見たサービス プリンシパルに関連付けます。

Application.ReadWrite.All アクセス許可に同意していることを確認します。

POST https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/homeRealmDiscoveryPolicies/$ref  

{  
    "@odata.id": "https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies/{policyId}"  
}  

ポリシーを追加するサービス プリンシパルごとに、この API 呼び出しを繰り返すことができます。

アプリケーションにホーム領域検出ポリシーが既に割り当てられている場合、2 つ目のポリシーを追加することはできません。 その場合は、アプリケーションに割り当てられている HRD ポリシーの定義を変更して、別のパラメーターを追加します。

Microsoft Graph を使用して HRD ポリシーが割り当てられているサービス プリンシパルを確認する

次の API 呼び出しを実行して、ポリシーが割り当てられているサービス プリンシパルを一覧表示します。

GET https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies/{policyId}/appliesTo  

アプリケーションのサインイン エクスペリエンスをテストして、新しいポリシーが動作していることを確認します。

Microsoft Graph PowerShell を使用してアプリケーションから HRD ポリシーを削除する

  1. ポリシーの ObjectID を取得します。

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

  2. アプリケーション サービス プリンシパルからポリシー割り当てを削除します。

    Remove-MgServicePrincipalHomeRealmDiscoveryPolicyHomeRealmDiscoveryPolicyByRef -ServicePrincipalId $servicePrincipalId -HomeRealmDiscoveryPolicyId $homeRealmDiscoveryPolicyId
    
  3. ポリシーが割り当てられているサービス プリンシパルを一覧表示して、削除を確認します。

    Get-MgPolicyHomeRealmDiscoveryPolicyApplyTo -HomeRealmDiscoveryPolicyId "<ObjectId of the Policy>"
    # Replace with the actual ObjectId of the Policy 
    

Microsoft Graph PowerShell を使用して HRD ポリシーを削除する

作成した HRD ポリシーを削除するには、次のコマンドを実行します。

    Remove-MgPolicyHomeRealmDiscoveryPolicy -HomeRealmDiscoveryPolicyId "<ObjectId of the Policy>" # Replace with the actual ObjectId of the Policy

Microsoft Graph を使用してアプリケーションから HRD ポリシーを削除する

  1. ポリシーの ObjectID を取得します。

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

  2. アプリケーション サービス プリンシパルからポリシー割り当てを削除します。

    DELETE https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/homeRealmDiscoveryPolicies/{policyId}/$ref
    
  3. ポリシーが割り当てられているサービス プリンシパルを一覧表示して、削除を確認します。

    GET https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies/<policyId>/appliesTo  
    

Microsoft Graph を使用して HRD ポリシーを削除する

作成した HRD ポリシーを削除するには、次の API 呼び出しを実行します。

DELETE https://graph.microsoft.com/v1.0/policies/homeRealmDiscoveryPolicies/{id}