禁用自动加速登录

本文介绍如何使用主领域发现 (HRD) 策略为某些域和应用程序禁用自动加速登录。 配置此策略后,管理员可以确保用户始终使用其托管凭据,提高安全性,并提供一致的登录体验。

主领域发现 (HRD) 策略为管理员提供多种方式来控制对其用户进行身份验证的方式和位置。 HRD 策略的 domainHintPolicy 部分用于帮助将联合用户迁移到云托管凭据(如 FIDO),方法是确保它们始终访问 Microsoft Entra 登录页,且不会因域提示而自动加速到联合 IDP。 若要详细了解 HRD 策略,请参阅主领域发现

在登录期间,如果管理员无法控制或更新域提示,则需要此策略。 例如,outlook.com/contoso.com将用户发送到追加了 &domain_hint=contoso.com 参数的登录页,以便将用户直接自动加速到 contoso.com 域的联合 IDP。 使用发送到联合 IDP 的托管凭据的用户无法使用其托管凭据登录,这降低了安全性,还会使拥有随机登录体验的用户感到沮丧。 推出托管凭据的管理员还应设置此策略,以确保用户始终可以使用其托管凭据。

先决条件

若要在 Microsoft Entra ID 中禁用应用程序的自动加速登录,需要:

  • 具有活动订阅的 Azure 帐户。 如果还没有帐户,请创建一个帐户
  • 以下角色之一:云应用程序管理员、应用程序管理员或服务主体的所有者。

使用 Microsoft Graph PowerShell 配置 HRD 以防止域提示

联合域的管理员应在包含四个阶段的计划中设置 HRD 策略的此部分。 此计划的目标是,最终让租户中的所有用户都使用其托管凭据(无需考虑域或应用程序),并保存那些对 domain_hint 使用情况有硬依赖关系的应用。 此计划可帮助管理员查找这些应用,将其从新策略中免除,并继续向租户的其余部分推出更改。

选择最初要向其推出此更改的域。 此域将是你的测试域,因此,请选择一个可能更易接受 UX 中更改的域(例如查看其他登录页)。 以下救命将配置为忽略使用此域名的所有应用程序的所有域提示。 在租户的默认 HRD 策略中设置此策略:

请运行 Connect 命令,以至少使用应用程序管理员角色登录到 Microsoft Entra ID:

Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -scopes "Policy.ReadWrite.ApplicationConfiguration"
  1. 运行以下命令以防止测试域的域提示。

    # Define the Home Realm Discovery Policy parameters  
    $params = @{
    definition = @(
        '{
            "HomeRealmDiscoveryPolicy": {
                "DomainHintPolicy": {
                    "IgnoreDomainHintForDomains": ["federated.example.edu"],
                    "RespectDomainHintForDomains": [],
                    "IgnoreDomainHintForApps": [],
                    "RespectDomainHintForApps": []
                }
            }
        }'
    )
    displayName = "Home Realm Discovery Domain Hint Exclusion Policy"
    isOrganizationDefault = $true
    }
    
    # Define the Home Realm Discovery Policy ID (ensure this is set to a valid ID)  
    $homeRealmDiscoveryPolicyId = "<Your-Policy-ID-Here>"  # Replace with your actual policy ID  
    
    # Update the policy to ignore domain hints for the specified domains  
    Update-MgPolicyHomeRealmDiscoveryPolicy -HomeRealmDiscoveryPolicyId $homeRealmDiscoveryPolicyId -BodyParameter $params  
    

    确保用实际应用 GUID 替换 app-client-Guid,并将占位符域值替换为实际域。

  2. 收集来自测试域用户的反馈。 收集由于此更改而中断的应用程序的详细信息 - 它们依赖于域提示使用情况,并且应进行更新。 现在,请将它们添加到 RespectDomainHintForApps 部分:

    # Define the Home Realm Discovery Policy parameters
    $params = @{
    definition = @(
        '{
            "HomeRealmDiscoveryPolicy": {
                "DomainHintPolicy": {
                    "IgnoreDomainHintForDomains": ["federated.example.edu"],
                    "RespectDomainHintForDomains": [],
                    "IgnoreDomainHintForApps": [],
                    "RespectDomainHintForApps": ["app1-clientID-Guid", "app2-clientID-Guid"]
                }
            }
        }'
    )
    displayName = "Home Realm Discovery Domain Hint Exclusion Policy"
    isOrganizationDefault = $true
    }
    # Define the Home Realm Discovery Policy ID (ensure this is set to a valid ID)  
    $homeRealmDiscoveryPolicyId = "<Your-Policy-ID-Here>"  # Replace with your actual policy ID  
    
    # Update the policy to ignore domain hints for the specified domains  
    Update-MgPolicyHomeRealmDiscoveryPolicy -HomeRealmDiscoveryPolicyId $homeRealmDiscoveryPolicyId -BodyParameter $params
    

    确保用实际应用 GUID 替换 app-client-Guid,并将占位符域值替换为实际域。

  3. 继续将策略的推出扩展到新域,并收集更多反馈。

    # Define the Home Realm Discovery Policy parameters  
    $params = @{
    definition = @(
        '{
            "HomeRealmDiscoveryPolicy": {
                "DomainHintPolicy": {
                    "IgnoreDomainHintForDomains": ["federated.example.edu", "otherDomain.com", "anotherDomain.com"],
                    "RespectDomainHintForDomains": [],
                    "IgnoreDomainHintForApps": [],
                    "RespectDomainHintForApps": ["app1-clientID-Guid", "app2-clientID-Guid"]
                }
            }
        }'
    )
    displayName = "Home Realm Discovery Domain Hint Exclusion Policy"
    isOrganizationDefault = $true
    }
    
    # Define the Home Realm Discovery Policy ID (ensure this is set to a valid ID)  
    $homeRealmDiscoveryPolicyId = "<Your-Policy-ID-Here>"  # Replace with your actual policy ID  
    
    # Update the policy to ignore domain hints for the specified domains  
    Update-MgPolicyHomeRealmDiscoveryPolicy -HomeRealmDiscoveryPolicyId $homeRealmDiscoveryPolicyId -BodyParameter $params
    

    确保用实际应用 GUID 替换 app-client-Guid,并将占位符域值替换为实际域。

  4. 完成面向所有域的推出,豁免那些应该继续加速的域:

    $params = @{
    definition = @(
        '{
            "HomeRealmDiscoveryPolicy": {
                "DomainHintPolicy": {
                    "IgnoreDomainHintForDomains": ["*"],
                    "RespectDomainHintForDomains": ["guestHandlingDomain.com"],
                    "IgnoreDomainHintForApps": [],
                    "RespectDomainHintForApps": ["app1-clientID-Guid", "app2-clientID-Guid"]
                }
            }
        }'
    )
    displayName = "Home Realm Discovery Domain Hint Exclusion Policy"
    isOrganizationDefault = $true
    }  
    
    # Define the Home Realm Discovery Policy ID (ensure this is set to a valid ID)  
    $homeRealmDiscoveryPolicyId = "<Your-Policy-ID-Here>"  # Replace with your actual policy ID  
    
    # Update the policy to ignore domain hints for the specified domains  
    Update-MgPolicyHomeRealmDiscoveryPolicy -HomeRealmDiscoveryPolicyId $homeRealmDiscoveryPolicyId -BodyParameter $params
    

    确保用实际应用 GUID 替换 app-client-Guid,并将占位符域值替换为实际域。

完成步骤 4 后,所有用户(除了 guestHandlingDomain.com 中的用户)都可以在 Microsoft Entra 登录页面登录,即使域提示将会导致对联合 IDP 的自动加速也是如此。 此设置的例外是,如果请求登录的应用是已免除的应用之一,(对于这些应用)则仍将接受所有域提示。

DomainHintPolicy 详细信息

HRD 策略的 DomainHintPolicy 部分是一个 JSON 对象,它允许管理员从域提示使用情况中选择退出某些域和应用程序。 就功能而言,本部分会告知 Microsoft Entra 登录页面的行为表现与登录请求上的 domain_hint 参数不存在时的一样。

“遵循和忽略策略”部分

部分 含义
IgnoreDomainHintForDomains 如果此域提示是在请求中发送的,请忽略它。 域地址的数组(例如 contoso.com)。 它还支持 all_domains
RespectDomainHintForDomains 如果此域提示是在请求中发送的,则遵循它,即使 IgnoreDomainHintForApps 指示请求中的应用不应自动加速。 该属性用于减缓网络内的弃用域提示的推出,你可以指明某些域仍应加速。 域地址的数组(例如 contoso.com)。 它还支持 all_domains
IgnoreDomainHintForApps 如果来自此应用程序的请求附带了域提示,请忽略它。 应用程序 ID (GUID) 的数组。 它还支持 all_apps
RespectDomainHintForApps 如果来自此应用程序的请求附带了域提示,则遵循它,即使 IgnoreDomainHintForDomains 包含该域也是如此。 用于确保在发现某些应用没有域提示的情况下中断时继续工作。 应用程序 ID (GUID) 的数组。 它还支持 all_apps

策略评估

DomainHintPolicy 逻辑在包含域提示的每个传入请求上运行,并基于请求中的两个数据片段(域提示中的域以及客户端 ID (应用))进行加速。 简而言之,对于域或应用,“遵循”优先于“忽略”给定域或应用程序的域提示的指令。

  • 在没有任何域提示策略的情况下,或者如果 4 个部分都没有引用提及的应用或域提示,则会评估其余的 HRD 策略
  • 如果 RespectDomainHintForAppsRespectDomainHintForDomains 部分中的任何一个(或两个)在请求中包含应用或域提示,则用户将根据请求自动加速到联合 IDP。
  • 如果 IgnoreDomainHintsForAppsIgnoreDomainHintsForDomains 中的任何一个(或两个)在请求中引用应用或域提示,但未被“遵循”部分所引用,则请求不会自动加速,且用户将停留在 Microsoft Entra 登录页面以提供用户名。

用户在登录页上输入用户名后,他们可以使用其托管凭据。 如果他们选择不使用托管凭据,或他们都未注册,则系统将像往常一样将其转到联合 IDP 进行凭据输入。