共用方式為


設定登入自動加速

本文提供使用主領域探索 (HRD) 原則設定同盟使用者的 Microsoft Entra 驗證行為的簡介。 其中涵蓋使用自動加速登入來略過使用者名稱輸入畫面,並自動將使用者轉寄給同盟登入端點。 若要深入了解 HRD 原則,請查看主領域探索一文。

必要條件

若要為 Microsoft Entra ID 中的應用程式設定 HRD 原則,您需要:

  • 具有有效訂用帳戶的 Azure 帳戶。 若您還沒有帳戶,可以免費建立帳戶
  • 應用程式管理員角色

自動加速登入

某些組織會將其 Microsoft Entra 租用戶中的網域設為與另一個識別提供者 (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 指令 來示範幾個案例,包括:

  • 設定 HRD 原則讓應用程式在具有單一同盟網域的租用戶中執行自動加速。
  • 設定 HRD 原則讓應用程式在租用戶已驗證的多個網域之一執行自動加速。
  • 設定 HRD 原則,讓繼承應用程式向 Microsoft Entra ID 針對同盟使用者執行直接的使用者名稱/密碼驗證。
  • 列出已設定原則的應用程式。

在下列範例中,您將建立、更新、連結和刪除 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 原則

在此範例中,您建立的原則在指派給應用程式時可執行以下功能:

  • 如果您的租用戶中有單一網域,則可讓使用者在登入應用程式時,自動加速前往同盟身分識別登入畫面。
  • 如果您的租用戶中有多個同盟網域,則可讓使用者自動加速前往同盟身分識別登入畫面。
  • 已具有指派原則的應用程式可讓同盟使用者直接透過非互動式使用者名稱/密碼登入至 Microsoft Entra ID。

如果您的租用戶中有單一網域,則下列原則可讓使用者在登入應用程式時,自動加速前往同盟身分識別登入畫面。

  1. 執行 Connect 命令,以至少具備 應用程式管理員 角色,登入 Microsoft Entra 身份識別平台:

    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 
    

當您的租用戶中有多個同盟網域時,則下列原則可讓使用者自動加速前往同盟身分識別登入畫面。 如果您有多個同盟網域都會進行應用程式使用者驗證,則您必須指定要自動加速的網域。

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. 瀏覽至 Identity>應用程式>Enterprise 應用程式>所有應用程式
  2. 在搜尋方塊中輸入現有應用程式的名稱,然後從搜尋結果中選取應用程式。 複製應用程式的物件識別碼。

因為您使用 Microsoft Graph PowerShell,請執行下列 Cmdlet 來列出服務主體及其識別符。

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

您可以為要新增原則的每個服務主體重複此命令。

如果應用程式已指派主領域探索原則,則您無法新增第二個原則。 如為此情況,請變更指派給應用程式的 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 請求來探討幾種情境,包括:

  • 設定 HRD 原則讓應用程式在具有單一同盟網域的租用戶中執行自動加速。

  • 設定 HRD 原則讓應用程式在租用戶已驗證的多個網域之一執行自動加速。

  • 設定 HRD 原則,讓繼承應用程式向 Microsoft Entra ID 針對同盟使用者執行直接的使用者名稱/密碼驗證。

  • 列出已設定原則的應用程式。

在下列範例中,您將建立、更新、連結和刪除 Microsoft Entra ID 中應用程式服務主體上的 HRD 原則。

  1. 開始之前,請存取 Microsoft Graph Explorer 視窗。

  2. 至少使用 應用程式管理員 角色登入。

  3. 授與同意 Policy.Read.All 權限。

  4. 執行下列 API 呼叫以查看組織中的所有原則:

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

如果沒有傳回任何內容,表示您的租用戶中未建立任何原則。

使用 Microsoft Graph 建立 HRD 原則

在此範例中,您建立的原則在指派給應用程式時可執行以下功能:

  • 如果您的租用戶中有單一網域,則可讓使用者在登入應用程式時,自動加速前往同盟身分識別登入畫面。
  • 如果您的租用戶中有多個同盟網域,則可讓使用者自動加速前往同盟身分識別登入畫面。
  • 已具有指派原則的應用程式可讓同盟使用者直接透過非互動式使用者名稱/密碼登入至 Microsoft Entra ID。

如果您的租用戶中有單一網域,則下列原則可讓使用者在登入應用程式時,自動加速前往同盟身分識別登入畫面。

從 Microsoft Graph 總管視窗:

  1. 至少使用 應用程式管理員 角色登入。

  2. 授與同意 Policy.ReadWrite.ApplicationConfiguration 權限。

  3. 張貼新原則或修補檔以更新現有的原則。

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

當您的租用戶中有多個同盟網域時,則下列原則可讓使用者自動加速前往同盟身分識別登入畫面。 如果您有多個同盟網域都會進行應用程式使用者驗證,則您必須指定要自動加速的網域。

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. 瀏覽至 Identity>Applications>Enterprise 應用程式>所有應用程式

  2. 在搜尋方塊中輸入現有應用程式的名稱,然後從搜尋結果中選取應用程式。 複製應用程式的物件識別碼。

    因為您使用 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 呼叫。

如果應用程式已指派主領域探索原則,則您無法新增第二個原則。 如為此情況,請變更指派給應用程式的 HRD 原則定義,以新增額外的參數。

使用 Microsoft Graph 檢查 HRD 原則指派到哪些服務主體

執行下列 API 呼叫,以列出指派原則的服務主體:

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

請確定您測試應用程式的登入體驗,以確認新原則是否正常運作。

使用 Microsoft Graph PowerShell 從應用程式移除 HRD 原則

  1. 取得策略的 ObjectID。

    使用上述範例來取得原則 ObjectID,以及您要從中移除它的應用程式服務主體。

  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,以及您要從中移除它的應用程式服務主體。

  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}