配置登录自动加速
本文介绍了如何使用主页领域发现 (HRD) 策略为联合用户配置 Microsoft Entra 身份验证行为。 它涉及使用自动加速登录来跳过用户名输入屏幕,并自动将用户转发到联合登录终结点。 若要详细了解 HRD 策略,请查看主领域发现一文。
先决条件
若要为 Microsoft Entra ID 中的应用程序配置 HRD 策略,你需要:
- 具有活动订阅的 Azure 帐户。 如果还没有帐户,请创建一个帐户。
- 应用程序管理员角色
自动加速登录
某些组织在其 Microsoft Entra 租户中配置域,以便与 Active Directory 联合身份验证服务 (ADFS) 等其他标识提供者 (IDP) 联合进行用户身份验证。 当用户登录到应用程序时,首先会看到 Microsoft Entra 登录页。 键入其用户主体名称 (UPN) 后,如果他们位于联合域中,则会将其带到为该域提供服务的 IDP 的登录页。 某些情况下,当用户尝试登录特定应用程序时,管理员可能希望将其定向到登录页。 因此,用户可以跳过初始 Microsoft Entra ID 页。 这个过程称为“登录自动加速”。
对于具有启用云的凭据(如短信服务 (SMS) 登录或 FIDO 密钥)的联合用户,应阻止登录自动加速。 要了解如何使用 HRD 阻止域提示,请参阅禁用自动加速登录。
重要
从 2023 年 4 月开始,使用自动加速或智能链接的组织可能会开始看到有一个新屏幕添加到了登录 UI。 此屏幕称为“域确认对话框”,是 Microsoft 安全强化一般承诺的一部分,需要用户确认他们登录的租户的域。 如果看到域确认对话框但无法识别列出的租户域,则应取消身份验证流并联系 IT 管理员。
有关详细信息,请访问域确认对话框。
使用 Microsoft Graph PowerShell 设置 HRD 策略
我们将使用 Microsoft Graph PowerShell cmdlets 来演练几个方案,其中包括:
- 在包含单个联合域的租户中为应用程序设置 HRD 策略来执行自动加速。
- 针对已针对租户进行验证的多个域之一,为应用程序设置 HRD 策略以执行自动加速。
- 设置 HRD 策略,使旧式应用程序能够在 Microsoft Entra ID 中对联合用户执行直接的用户名/密码身份验证。
- 列出为其配置了策略的应用程序。
以下示例在 Microsoft Entra ID 中的应用程序服务主体上创建、更新、链接、删除 HRD 策略。
在开始之前,请运行 Connect 命令,以至少使用应用程序管理员角色登录到 Microsoft Entra ID:
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -scopes "Policy.Read.All"
运行以下命令,查看组织中的所有策略:
Get-MgPolicyHomeRealmDiscoveryPolicy -Property Id, displayName
如果未返回任何内容,则表示租户中未创建任何策略。
使用 Microsoft Graph PowerShell 创建 HRD 策略
在此示例中,将创建一个策略,以便将策略分配给应用程序时,可以执行以下任一操作:
- 当租户中包含单个域时,请在用户登录到应用程序期间将用户自动加速到联合标识提供者登录屏幕。
- 将用户自动加速到联合标识提供者登录屏幕,前提是租户中包含多个联合域。
- 使策略分配到的应用程序的联合用户能够使用用户名/密码以非交互方式直接登录到 Microsoft Entra ID。
当租户中包含单个域时,在用户登录到应用程序期间,以下策略会将用户自动加速到联合标识提供者登录屏幕。
请运行 Connect 命令,以至少使用应用程序管理员角色登录到 Microsoft Entra ID:
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -scopes "Policy.ReadWrite.ApplicationConfiguration"
运行以下命令来创建新 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 -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -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 -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -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 管理中心。 使用此选项:
- 浏览到“标识”>“应用程序”>“企业应用程序”>“所有应用程序”。
- 在“搜索”框中输入现有应用程序的名称,然后从搜索结果中选择该应用程序。 复制应用程序的对象 ID。
由于使用的是 Microsoft Graph PowerShell,因此可以运行下面的 cmdlet 来列出服务主体及其 ID。
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -scopes "Application.Read.All"
Get-MgServicePrincipal
使用 Microsoft Graph PowerShell 将策略分配给服务主体
在获取了要配置自动加速的应用程序的服务主体的“ObjectID”后,请运行以下命令。 该命令将创建的 HRD 策略与之前部分中找到的服务主体关联起来。
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -scopes "Policy.ReadWrite.ApplicationConfiguration", "Application.ReadWrite.All"
# Define the parameters for the New-MgServicePrincipalHomeRealmDiscoveryPolicy cmdlet
$assignParams = @{
"@odata.id" = "https://microsoftgraph.chinacloudapi.cn/v1.0/policies/homeRealmDiscoveryPolicies/<policyId>"
}
New-MgServicePrincipalHomeRealmDiscoveryPolicyByRef -ServicePrincipalId $servicePrincipalId -BodyParameter $assignParams
可以为要向其添加策略的每个服务主体重复此命令。
如果已经为应用程序分配了 HomeRealmDiscovery 策略,则无法添加另一个策略。 在这种情况下,请更改分配到应用程序的 HRD 策略的定义,以添加其他参数。
使用 Microsoft Graph PowerShell 检查 HRD 策略分配到的服务主体
运行以下命令,列出向其分配了策略的服务主体:
Get-MgPolicyHomeRealmDiscoveryPolicyApplyTo -HomeRealmDiscoveryPolicyId "<ObjectId of the Policy>"
# Replace with the actual ObjectId of the Policy
确保测试应用程序的登录体验,以检查新策略是否正常工作。
使用 Microsoft Graph PowerShell 从应用程序删除 HRD 策略
获取策略的 ObjectId。
使用前一个示例获取策略的“ObjectID”,以及希望从中删除策略的应用程序服务主体的“ObjectID”。
从应用程序服务主体中删除策略分配。
Remove-MgServicePrincipalHomeRealmDiscoveryPolicyHomeRealmDiscoveryPolicyByRef -ServicePrincipalId $servicePrincipalId -HomeRealmDiscoveryPolicyId $homeRealmDiscoveryPolicyId
通过列出向其分配了策略的服务主体检查删除情况。
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