使用电子邮件作为备用登录 ID 登录到 Microsoft Entra ID(预览)

注意

使用电子邮件作为备用登录 ID 登录到 Microsoft Entra ID 是 Microsoft Entra ID 的公共预览功能。 有关预览版的详细信息,请参阅 Microsoft Azure 预览版补充使用条款

许多组织希望支持用户使用与其本地目录环境相同的凭据登录到 Microsoft Entra ID。 使用此方法(称为混合身份验证),用户只需记住一组凭据。

一些组织尚未转换为使用混合身份验证,原因如下:

  • 默认情况下,Microsoft Entra 用户主体名称 (UPN) 会设置为与本地 UPN 相同的值。
  • 更改 Microsoft Entra UPN 会在本地和 Microsoft Entra 环境之间创建错误匹配,这可能导致某些应用程序和服务出现问题。
  • 出于业务或合规性原因,组织不希望使用本地 UPN 登录到 Microsoft Entra ID。

要移动到混合身份验证,可将 Microsoft Entra ID 配置为允许用户使用其电子邮件作为备用登录 ID 登录。 例如,如果 Contoso 的产品名称已更改为 Fabrikam,则可以使用电子邮件作为备用登录 ID 登录,而不是继续使用旧 ana@contoso.com UPN 登录。 要访问应用程序或服务,用户应使用其非 UPN 电子邮件(例如 ana@fabrikam.com)登录到 Microsoft Entra ID。

Diagram of email as an alternate login ID.

本文介绍如何启用电子邮件并将其用作备用登录 ID。

准备阶段

以下是有关将电子邮件用作备用登录 ID 的需知信息:

  • Microsoft Entra ID 免费版及更高版本提供该项功能。
  • 除 UPN 以外,该功能还支持经过云身份验证的 Microsoft Entra 用户通过 ProxyAddress 登录。 要详细了解此功能如何适用于 Microsoft Entra 企业到企业 (B2B) 协作,请参阅 B2B 部分。
  • 当用户使用非 UPN 电子邮件登录时,ID 令牌中的 unique_namepreferred_username 声明(若存在)将返回非 UPN 电子邮件的值。
    • 如果正在使用的非 UPN 电子邮件已经过时(不再属于用户),这些声明将改为返回 UPN。
  • 此功能支持通过密码哈希同步 (PHS) 或直通身份验证 (PTA) 进行托管身份验证。
  • 有两个选项可用于配置该项功能:
    • 主领域发现 (HRD) 策略 - 使用此选项可为整个租户启用该功能。 需要“全局管理员”、“应用程序管理员”或“云应用程序管理员”角色。
    • 分阶段推出策略 - 使用此选项可通过特定 Microsoft Entra 组测试该功能。 需要全局管理员权限。 首次为分阶段推出添加安全组时,限制于 200 个用户,以避免 UX 超时。添加组后,可以根据需要直接向其添加更多用户。

预览版限制

在当前预览状态下,用作备用登录 ID 的电子邮件包含以下限制:

  • 用户体验 - 即使通过非 UPN 电子邮件登录,用户也可能会看到其 UPN。 可能会出现以下示例行为:

    • 当系统将用户定向到使用 login_hint=<non-UPN email> 进行 Microsoft Entra 登录时,系统将提示用户使用 UPN 登录。
    • 当用户使用非 UPN 电子邮件登录并输入错误密码时,“输入密码”页将改为显示 UPN。
    • 在某些 Microsoft 网站和应用(例如 Microsoft Office)上,通常显示在右上角的“帐户管理器”控件可能会显示用户的 UPN,而不是用于登录的非 UPN 电子邮件。
  • 支持的流 - 有些流当前与非 UPN 电子邮件尚不兼容,如下所示:

    • 标识保护不匹配可检测泄露凭据风险的非 UPN 电子邮件。 此风险检测使用 UPN 来匹配已泄漏的凭据。 有关详细信息,请参阅操作方法:调查风险
    • 使用非 UPN 电子邮件登录的用户无法更改其密码。 Microsoft Entra 自助式密码重置 (SSPR) 应会按预期执行。 在 SSPR 期间,如果用户使用非 UPN 电子邮件验证其身份,则用户可能会看到他们的 UPN。
  • 不支持的方案 - 不支持以下场景。 使用非 UPN 电子邮件登录到:

  • 不支持的应用 - 如果某些第三方应用程序假定 unique_namepreferred_username 声明不变或将始终匹配特定的用户属性(如 UPN),则这些应用程序可能无法按预期正常运作。

  • 登录 - 对 HRD 策略中的功能配置所做的更改不会显式显示在审核日志中。

  • 分阶段推出策略 - 仅当使用分阶段推出策略启用此功能时,以下限制才适用:

    • 对于包含在其他分阶段推出策略中的用户,该功能未按预期工作。
    • 分阶段推出策略的每项功能最多支持 10 个组使用。
    • 分阶段推出策略不支持嵌套组。
    • 分阶段推出策略不支持动态组。
    • 组内的联系人对象会阻止向分阶段推出策略添加组。
  • 重复值 - 在租户中,仅云用户的 UPN 可能与另一个用户从本地目录同步的代理地址相同。 在此方案中,启用此功能后,仅云用户将无法使用其 UPN 登录。 有关此问题的更多内容,请参阅故障排除部分。

备用登录 ID 选项概述

要登录到 Microsoft Entra ID,用户需输入唯一标识其帐户的名称。 以前,只能使用 Microsoft Entra UPN 作为登录标识符。

对于本地 UPN 是用户首选登录电子邮件的组织而言,此方法非常有用。 这些组织会将 Microsoft Entra UPN 设置为与本地 UPN 完全相同的值,并且用户将具有一致的登录体验。

AD FS 的备用登录 ID

但是,有些组织不会将本地 UPN 用作登录标识符。 在本地环境中,可以将本地 AD DS 配置为允许使用备用登录 ID 进行登录。 请勿选择将 Microsoft Entra UPN 设置为与本地 UPN 相同的值,因为 Microsoft Entra 会要求用户使用该值登录。

Microsoft Entra Connect 中的备用登录 ID

此问题的典型解决方法是将 Microsoft Entra UPN 设置为用户希望用来登录的电子邮件地址。 虽然这种方法是有效的,但会在本地 AD 与 Microsoft Entra ID 之间生成不同的 UPN,而且此配置与所有 Microsoft 365 工作负载不兼容。

将电子邮件用作备用登录 ID

另一种方法是将 Microsoft Entra ID 和本地 UPN 同步为相同的值,然后配置 Microsoft Entra ID 以支持用户使用已验证的电子邮件登录到 Microsoft Entra ID。 若要提供此功能,请在本地目录中用户的“ProxyAddresses”属性中定义一个或多个电子邮件地址。 然后,ProxyAddresses 会使用 Microsoft Entra Connect 自动同步到 Microsoft Entra ID。

选项 说明
AD FS 的备用登录 ID 允许 AD FS 用户使用备用属性(例如电子邮件)登录。
Microsoft Entra Connect 中的备用登录 ID 将备用属性(例如电子邮件)作为 Microsoft Entra UPN 同步。
将电子邮件用作备用登录 ID 支持 Microsoft Entra 用户使用已验证的域 ProxyAddresses 登录。

将登录电子邮件地址同步到 Microsoft Entra ID

传统 Active Directory 域服务 (AD DS) 或 Active Directory 联合身份验证服务 (AD FS) 的身份验证直接在网络上进行,并且由 AD DS 基础结构处理。 通过混合身份验证,用户可以改为直接登录到 Microsoft Entra ID。

要支持这种混合身份验证方法,请使用 Microsoft Entra Connect 将本地 AD DS 环境同步到 Microsoft Entra ID,并将其配置为使用 PHS 或 PTA。 有关详细信息,请参阅为 Microsoft Entra 混合标识解决方案选择正确的身份验证方法

在这两个配置选项中,用户会将其用户名和密码提交到 Microsoft Entra ID,并由后者验证凭据和颁发票证。 当用户登录到 Microsoft Entra ID 时,组织无需再托管和管理 AD FS 基础结构。

Microsoft Entra Connect 会自动同步的用户属性之一是 ProxyAddresses。 如果用户在本地 AD DS 环境中将电子邮件地址定义为 ProxyAddresses 属性的一部分,则该地址会自动同步到 Microsoft Entra ID。 然后,可以将此电子邮件地址作为备用登录 ID 直接用于 Microsoft Entra 登录过程。

重要

仅租户的已验证域中的电子邮件会同步到 Microsoft Entra ID。 每个 Microsoft Entra 租户具有一个或多个已验证的域,你对这些域具有已验证的所有权,并且这些域会唯一绑定到你的租户。

有关详细信息,请参阅在 Microsoft Entra ID 中添加和验证自定义域名

B2B 来宾用户通过电子邮件地址登录

Diagram of email as an alternate login ID for B 2 B guest user sign-in.

电子邮件用作备用登录 ID 适用于“自带登录标识符”模型下的 Microsoft Entra B2B 协作。 在主租户中启用电子邮件用作备用登录 ID 后,Microsoft Entra 用户可在资源租户终结点上使用非 UPN 电子邮件执行来宾登录。 资源租户无需执行任何操作即可启用此功能。

注意

在未启用该功能的资源租户终结点上使用备用登录 ID 时,登录过程将无缝运行,但会中断 SSO。

允许用户使用电子邮件地址登录

注意

此配置选项使用 HRD 策略。 有关详细信息,请参阅 homeRealmDiscoveryPolicy 资源类型

使用 Microsoft Entra ID Connect 将应用了 ProxyAddresses 属性的用户同步到 Microsoft Entra ID 后,你需要启用该功能,以便用户能够使用电子邮件作为租户的备用登录 ID 进行登录。 此功能会告知 Microsoft Entra 登录服务器不仅要根据 UPN 值检查登录标识符,还要根据电子邮件地址的 ProxyAddresses 值进行检查。

在预览期间,当前需要“全局管理员”权限才能使用电子邮件作为备用登录 ID 进行登录。 可以使用 Microsoft Entra 管理中心或 Graph PowerShell 来设置该功能。

Microsoft Entra 管理中心

提示

本文中的步骤可能因开始使用的门户而略有不同。

  1. 全局管理员身份登录到 Microsoft Entra 管理中心

  2. 从 Microsoft Entra 窗口左侧的导航菜单中,选择“Microsoft Entra Connect”>“将电子邮件用作备用登录 ID”。

    Screenshot of email as alternate login ID option in the Microsoft Entra admin center.

  3. 单击“将电子邮件用作备用登录 ID”旁边的复选框。

  4. 单击“保存” 。

    Screenshot of email as alternate login ID blade in the Microsoft Entra admin center.

应用策略后,最长可能需经过一小时,策略才能进行传播,用户才可使用其备用登录 ID 进行登录。

PowerShell

注意

此配置选项使用 HRD 策略。 有关详细信息,请参阅 homeRealmDiscoveryPolicy 资源类型

使用 Microsoft Entra Connect 将应用了 ProxyAddresses 属性的用户同步到 Microsoft Entra ID 之后,你需要启用该功能,以便用户能够使用电子邮件作为租户的备用登录 ID 进行登录。 此功能会告知 Microsoft Entra 登录服务器不仅要根据 UPN 值检查登录标识符,还要根据电子邮件地址的 ProxyAddresses 值进行检查。

需要“全局管理员”权限,才能完成以下步骤:

  1. 以管理员身份打开 PowerShell 会话,然后使用 Install-Module cmdlet 安装 Microsoft.Graph 模块:

    Install-Module Microsoft.Graph
    

    有关安装的详细信息,请参阅安装 Microsoft Graph PowerShell SDK

  2. 使用 Connect-MgGraph cmdlet 登录到 Microsoft Entra 租户:

    Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration" -TenantId organizations
    

    该命令将要求使用 Web 浏览器进行身份验证。

  3. 使用 Get-MgPolicyHomeRealmDiscoveryPolicy cmdlet 检查租户中是否已存在 HomeRealmDiscoveryPolicy,如下所示:

    Get-MgPolicyHomeRealmDiscoveryPolicy
    
  4. 如果当前未配置任何策略,则该命令将不返回任何内容。 如果返回策略,请跳过此步骤,并转到下一步以更新现有策略。

    若要将 HomeRealmDiscoveryPolicy 添加到租户,请使用 New-MgPolicyHomeRealmDiscoveryPolicy cmdlet,并将 AlternateIdLogin 属性设置为“"Enabled": true”,如下例所示:

    $AzureADPolicyDefinition = @(
      @{
         "HomeRealmDiscoveryPolicy" = @{
            "AlternateIdLogin" = @{
               "Enabled" = $true
            }
         }
      } | ConvertTo-JSON -Compress
    )
    
    $AzureADPolicyParameters = @{
      Definition            = $AzureADPolicyDefinition
      DisplayName           = "BasicAutoAccelerationPolicy"
      AdditionalProperties  = @{ IsOrganizationDefault = $true }
    }
    
    New-MgPolicyHomeRealmDiscoveryPolicy @AzureADPolicyParameters
    

    成功创建策略后,该命令将返回策略 ID,如以下示例输出所示:

    Definition                                                           DeletedDateTime Description DisplayName                 Id            IsOrganizationDefault
    ----------                                                           --------------- ----------- -----------                 --            ---------------------
    {{"HomeRealmDiscoveryPolicy":{"AlternateIdLogin":{"Enabled":true}}}}                             BasicAutoAccelerationPolicy HRD_POLICY_ID True
    
  5. 如果已有配置的策略,请检查是否已启用 AlternateIdLogin 属性,如以下示例策略输出所示:

    Definition                                                           DeletedDateTime Description DisplayName                 Id            IsOrganizationDefault
    ----------                                                           --------------- ----------- -----------                 --            ---------------------
    {{"HomeRealmDiscoveryPolicy":{"AlternateIdLogin":{"Enabled":true}}}}                             BasicAutoAccelerationPolicy HRD_POLICY_ID True
    

    如果策略存在但 AlternateIdLogin 属性不存在或未启用,或者要保留的策略中存在其他属性,请使用 Set-AzureADPolicyUpdate-MgPolicyHomeRealmDiscoveryPolicy cmdlet 更新现有策略。

    重要

    更新策略时,请确保已包含任何旧设置和新 AlternateIdLogin 属性。

    以下示例添加了 AlternateIdLogin 属性,并保留了之前设置的 AllowCloudPasswordValidation 属性:

    $AzureADPolicyDefinition = @(
      @{
         "HomeRealmDiscoveryPolicy" = @{
            "AllowCloudPasswordValidation" = $true
            "AlternateIdLogin" = @{
               "Enabled" = $true
            }
         }
      } | ConvertTo-JSON -Compress
    )
    
    $AzureADPolicyParameters = @{
      HomeRealmDiscoveryPolicyId = "HRD_POLICY_ID"
      Definition                 = $AzureADPolicyDefinition
      DisplayName                = "BasicAutoAccelerationPolicy"
      AdditionalProperties       = @{ "IsOrganizationDefault" = $true }
    }
    
    Update-MgPolicyHomeRealmDiscoveryPolicy @AzureADPolicyParameters
    

    确认更新后的策略显示了所做的更改且现已启用 AlternateIdLogin 属性:

    Get-MgPolicyHomeRealmDiscoveryPolicy
    

注意

应用策略后,最长可能需要一小时才能进行传播,使用户能够使用电子邮件作为备用登录 ID 进行登录。

删除策略

若要删除 HRD 策略,请使用 Remove-MgPolicyHomeRealmDiscoveryPolicy cmdlet:

Remove-MgPolicyHomeRealmDiscoveryPolicy -HomeRealmDiscoveryPolicyId "HRD_POLICY_ID"

启用分阶段推出以测试用户使用电子邮件地址进行登录

注意

此配置选项使用分阶段推出策略。 有关详细信息,请参阅 featureRolloutPolicy 资源类型

通过分阶段推出策略,租户管理员可以为特定 Microsoft Entra 组启用相关功能。 建议租户管理员使用分阶段推出来测试用户使用电子邮件地址进行登录。 当管理员准备好将此功能部署到其整个租户时,其应当使用 HRD 策略

需要“全局管理员”权限,才能完成以下步骤:

  1. 以管理员身份打开 PowerShell 会话,然后使用 Install-Module cmdlet 安装“Microsoft.Graph.Beta”模块:

    Install-Module Microsoft.Graph.Beta
    

    如果出现提示,选择“Y”以安装 NuGet 或从不受信任的存储库进行安装。

  2. 使用 Connect-MgGraph cmdlet 登录到你的 Microsoft Entra 租户:

    Connect-MgGraph -Scopes "Directory.ReadWrite.All"
    

    该命令将返回有关你的帐户、环境和租户 ID 的信息。

  3. 使用以下 cmdlet 列出所有现有的分阶段推出策略:

    Get-MgBetaPolicyFeatureRolloutPolicy
    
  4. 如果没有针对此功能的现有分阶段推出策略,请创建新的分阶段推出策略,并记下策略 ID:

    $MgPolicyFeatureRolloutPolicy = @{
    Feature    = "EmailAsAlternateId"
    DisplayName = "EmailAsAlternateId Rollout Policy"
    IsEnabled   = $true
    }
    New-MgBetaPolicyFeatureRolloutPolicy @MgPolicyFeatureRolloutPolicy
    
  5. 查找要添加到分阶段推出策略的组的 directoryObject ID。 请注意为“Id”参数返回的值,因为它将在下一步中使用。

    Get-MgGroup -Filter "DisplayName eq 'Name of group to be added to the staged rollout policy'"
    
  6. 将组添加至分阶段推出策略,如以下示例所示。 将“-FeatureRolloutPolicyId”参数中的值替换为步骤 4 中为策略 ID 返回的值,并将“-OdataId”参数中的值替换为步骤 5 中所述的“Id”。 最多可能需要经过一小时后,组中的用户才能使用电子邮件作为备用登录 ID 登录到 Microsoft Entra ID。

    New-MgBetaDirectoryFeatureRolloutPolicyApplyToByRef `
       -FeatureRolloutPolicyId "ROLLOUT_POLICY_ID" `
       -OdataId "https://graph.microsoft.com/v1.0/directoryObjects/{GROUP_OBJECT_ID}"
    

对于添加到组的新成员,则可能最多需要 24 小时才能使用电子邮件作为备用登录 ID 登录到 Microsoft Entra ID。

删除组

若要从分阶段推出策略中删除组,请运行以下命令:

Remove-MgBetaPolicyFeatureRolloutPolicyApplyToByRef -FeatureRolloutPolicyId "ROLLOUT_POLICY_ID" -DirectoryObjectId "GROUP_OBJECT_ID"

删除策略

若要删除分阶段推出策略,请先禁用该策略,然后将其从系统中删除:

Update-MgBetaPolicyFeatureRolloutPolicy -FeatureRolloutPolicyId "ROLLOUT_POLICY_ID" -IsEnabled:$false 
Remove-MgBetaPolicyFeatureRolloutPolicy -FeatureRolloutPolicyId "ROLLOUT_POLICY_ID"

测试用户是否能够通过电子邮件地址登录

若要测试用户能否通过电子邮件登录,请转到 https://myprofile.microsoft.com,然后使用非 UPN 电子邮件(例如 balas@fabrikam.com )进行登录。 此登录过程应与使用 UPN 登录非常相似。

故障排除

如果用户在使用其电子邮件地址进行登录时遇到问题,请查看以下故障排除步骤:

  1. 请确保自启用将电子邮件用作备用登录 ID 以来,至少已经过一小时。 如果用户最近已被添加到分阶段推出策略的相关组,请确保自将该用户添加到组以后,至少已经过 24 小时。

  2. 如果使用 HRD 策略,请确认 Microsoft Entra ID HomeRealmDiscoveryPolicy 已将 AlternateIdLogin 定义属性设置为“已启用”: true,并已将 IsOrganizationDefault 属性设置为“True”:

    Get-MgBetaPolicyHomeRealmDiscoveryPolicy | Format-List *
    

    如果使用分阶段推出策略,请确认 Microsoft Entra ID FeatureRolloutPolicy 已将 IsEnabled 属性已设置为“True”:

    Get-MgBetaPolicyFeatureRolloutPolicy
    
  3. 请确保用户帐户已在 Microsoft Entra ID ProxyAddresses 属性中设置电子邮件地址。

登录日志

Screenshot of Microsoft Entra sign-in logs showing email as alternate login ID activity.

有关详细信息,可以查看 Microsoft Entra 中的登录日志。 使用电子邮件作为备用登录 ID 的登录将在“登录标识符类型”字段中发出 proxyAddress,在“登录标识符”字段中发出输入的用户名。

仅云用户与已同步用户之间的值发生冲突

在租户中,仅云用户的 UPN 值可能与另一个用户从本地目录同步的代理地址相同。 在此方案中,启用此功能后,仅云用户将无法使用其 UPN 登录。 以下提供检测此问题实例的相关步骤。

  1. 以管理员身份打开 PowerShell 会话,然后使用 Install-Module cmdlet 安装“AzureADPreview”模块:

    Install-Module Microsoft.Graph.Beta
    

    如果出现提示,选择“Y”以安装 NuGet 或从不受信任的存储库进行安装。

  2. 全局管理员身份使用 Connect-AzureAD cmdlet 登录到你的 Microsoft Entra 租户:

    Connect-MgGraph -Scopes "User.Read.All"
    
  3. 获取受影响的用户。

    # Get all users
    $allUsers = Get-MgUser -All
    
    # Get list of proxy addresses from all synced users
    $syncedProxyAddresses = $allUsers |
        Where-Object {$_.ImmutableId} |
        Select-Object -ExpandProperty ProxyAddresses |
        ForEach-Object {$_ -Replace "smtp:", ""}
    
    # Get list of user principal names from all cloud-only users
    $cloudOnlyUserPrincipalNames = $allUsers |
        Where-Object {!$_.ImmutableId} |
        Select-Object -ExpandProperty UserPrincipalName
    
    # Get intersection of two lists
    $duplicateValues = $syncedProxyAddresses |
        Where-Object {$cloudOnlyUserPrincipalNames -Contains $_}
    
  4. 输出受影响的用户:

    # Output affected synced users
    $allUsers |
        Where-Object {$_.ImmutableId -And ($_.ProxyAddresses | Where-Object {($duplicateValues | ForEach-Object {"smtp:$_"}) -Contains $_}).Length -GT 0} |
        Select-Object ObjectId, DisplayName, UserPrincipalName, ProxyAddresses, ImmutableId, UserType
    
    # Output affected cloud-only users
    $allUsers |
        Where-Object {!$_.ImmutableId -And $duplicateValues -Contains $_.UserPrincipalName} |
        Select-Object ObjectId, DisplayName, UserPrincipalName, ProxyAddresses, ImmutableId, UserType
    
  5. 将受影响的用户输出到 CSV:

    # Output affected users to CSV
    $allUsers |
        Where-Object {
            ($_.ImmutableId -And ($_.ProxyAddresses | Where-Object {($duplicateValues | ForEach-Object {"smtp:$_"}) -Contains $_}).Length -GT 0) -Or
            (!$_.ImmutableId -And $duplicateValues -Contains $_.UserPrincipalName)
        } |
        Select-Object ObjectId, DisplayName, UserPrincipalName, @{n="ProxyAddresses"; e={$_.ProxyAddresses -Join ','}}, @{n="IsSyncedUser"; e={$_.ImmutableId.Length -GT 0}}, UserType |
        Export-Csv -Path .\AffectedUsers.csv -NoTypeInformation
    

后续步骤

要详细了解混合标识(例如 Microsoft Entra 应用程序代理或 Microsoft Entra 域服务),请参阅用于访问和管理本地工作负载的 Microsoft Entra 混合标识

有关混合标识操作的详细信息,请参阅密码哈希同步传递身份验证同步的工作原理。