使用電子郵件作為替代登入識別碼登入 Azure AD (預覽)

注意

使用電子郵件作為替代登入識別碼來登入 Azure AD 是 Azure Active Directory 的公開預覽功能。 如需有關預覽版的詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

許多組織都希望使用者能使用與其內部部署目錄環境相同的認證登入 Azure Active Directory (Azure AD)。 使用這種稱為混合式驗證的方法,使用者只需要記住一組認證。

有些組織尚未移至混合式驗證,其原因如下:

  • 根據預設,會將 Azure AD 使用者主體名稱 (UPN) 設定為與內部部署 UPN 相同的值。
  • 變更 Azure AD UPN 會在內部部署與 Azure AD 環境之間造成不相符的情況,可能會導致某些應用程式與服務的問題。
  • 因為商務或合規性的原因,所以組織不希望使用內部部署 UPN 登入 Azure AD。

若要協助移至混合式驗證,您可以設定 Azure AD,讓使用者使用將電子郵件作為替代登入識別碼來登入。 例如,若將 Contoso 重新命名為 Fabrikam,就可使用將電子郵件作為替代登入識別碼來登入,而不是繼續使用舊版 ana@contoso.com UPN 登入。 若要存取應用程式或服務,使用者會使用其非 UPN 的電子郵件 (例如 ana@fabrikam.com) 登入 Azure AD。

Diagram of email as an alternate login I D.

本文會示範如何啟用及使用將電子郵件作為替代登入識別碼。

開始之前

以下是您必須了解將電子郵件作為替代登入識別碼的相關資訊:

  • 此功能可在 Azure AD Free 版本及更新版本中使用。
  • 除了 UPN 之外,此功能也可為雲端驗證的 Azure AD 使用者提供 ProxyAddresses 的登入方式。 在 B2B 一節中深入了解這如何適用於 Azure AD 企業對企業 (B2B) 共同作業。
  • 當使用者使用非 UPN 電子郵件登入時,識別碼權杖中的 unique_namepreferred_username 宣告 (若存在) 將會傳回非 UPN 電子郵件。
  • 此功能支援使用密碼雜湊同步 (PHS) 或傳遞驗證 (PTA) 的受管理驗證。
  • 有兩個選項可供設定該功能使用:

預覽限制

在目前的預覽狀態中,下列限制適用於將電子郵件作為替代登入識別碼:

  • 使用者體驗 - 即使使用者使用其非 UPN 電子郵件登入,仍可看到自己的 UPN。 您可能會看到下列範例行為:

    • 將使用者導向具有 login_hint=<non-UPN email> 的 Azure AD 登入時,使用者會收到使用 UPN 登入的提示。
    • 當使用者使用非 UPN 電子郵件登入,並輸入不正確的密碼時,[輸入您的密碼] 頁面會變更以顯示 UPN。
    • 在某些 Microsoft 網站與應用程式 (例如 Microsoft Office) 上,[帳戶管理員] 控制項通常會顯示在右上方,可能會顯示使用者的 UPN,而非用於登入的非 UPN 電子郵件。
  • 不支援的流程 - 某些流程目前與非 UPN 電子郵件不相容,如下所示:

    • Identity Protection 與具有「認證外洩」風險偵測的非 UPN 電子郵件不相符。 此風險偵測會使用 UPN 比對已外洩的認證。 如需詳細資訊,請參閱 Azure AD Identity Protection 風險偵測與補救
    • 當使用者使用非 UPN 電子郵件登入時,無法變更其密碼。 Azure AD 自助式密碼重設 (SSPR) 應該能如預期般運作。 在 SSPR 期間,若使用者使用非 UPN 電子郵件驗證其身分識別,則可能會看到其 UPN。
  • 不支援的案例 - 不支援下列案例。 使用非 UPN 電子郵件登入:

  • 不支援的應用程式 - 若某些協力廠商應用程式假設 unique_namepreferred_username 宣告不可變,或是一律與特定的使用者屬性相符 (例如 UPN),則這些應用程式可能無法如預期般運作。

  • 記錄 - 對 HRD 原則中的功能設定所進行的變更不會明確地顯示在稽核記錄中。

  • 分段推出原則 - 只有在使用分段推出原則啟用功能時,才適用下列限制:

    • 針對其他分段推出原則中所包含的使用者,該功能不會如預期般運作。
    • 分段推出原則最多可支援每項功能 10 個群組。
    • 分段推出原則不支援巢狀群組。
    • 分段推出原則不支援動態群組。
    • 群組內的連絡人物件將會禁止群組新增至分段推出原則。
  • 重複的值 - 在租用戶中,僅限雲端使用者的 UPN 可擁有與從內部部署目錄同步之另一個使用者 Proxy 位址相同的值。 在此案例中,啟用功能之後,僅限雲端的使用者將無法使用其 UPN 登入。 有關此問題的詳細資訊,請參閱疑難排解一節。

替代登入識別碼選項概觀

若要登入 Azure AD,使用者會輸入唯一識別其帳戶的值。 在過去,您只能使用 Azure AD UPN 作為登入識別碼。

對於內部部署 UPN 是使用者慣用登入電子郵件的組織而言,此方法很好用。 這些組織會將 Azure AD UPN 設定為與內部部署 UPN 完全相同的值,而使用者會有一致的登入體驗。

AD FS 的替代登入識別碼

然而,在某些組織中,不會使用內部部署 UPN 作為登入識別碼。 在內部部署環境中,您可以將本機 AD DS 設定為允許使用替代登入識別碼登入。 將 Azure AD UPN 設定為與內部部署 UPN 相同的值並不可行,因為 Azure AD 接著會需要使用者使用該值登入。

Azure AD Connect 中的替代登入識別碼

此問題的一般因應措施是將 Azure AD UPN 設定為使用者預期用於登入的電子郵件地址。 此方法可行,但會導致內部部署 AD 與 Azure AD 之間的 UPN 不同,且此設定與所有 Microsoft 365 工作負載均不相容。

將電子郵件作為替代登入識別碼

另一種方法是將 Azure AD 與內部部署 UPN 同步為相同的值,然後將 Azure AD 設定為允許使用者使用已驗證的電子郵件登入 Azure AD。 若要提供此功能,請在內部部署目錄中之使用者的 ProxyAddresses 屬性定義一或多個電子郵件地址。 接著就能使用 Azure AD Connect 將 ProxyAddresses 自動同步至 Azure AD。

選項 Description
AD FS 的替代登入識別碼 使用 AD FS 使用者的替代屬性 (例如 Mail) 啟用登入。
Azure AD Connect 中的替代登入識別碼 將替代屬性 (例如 Mail) 同步為 Azure AD UPN。
將電子郵件作為替代登入識別碼 使用 Azure AD 使用者的已驗證網域 ProxyAddresses 啟用登入。

將登入電子郵件地址同步至 Azure AD

傳統的 Active Directory Domain Services (AD DS) 或 Active Directory 同盟服務 (AD FS) 可以直接在網路上驗證,並由 AD DS 基礎結構處理。 使用混合式驗證時,使用者可以改為直接登入 Azure AD。

若要支援此混合式驗證方法,請使用 Azure AD Connect 將內部部署 AD DS 環境同步至 Azure AD,並將其設定為使用 PHS 或 PTA。 如需詳細資訊,請參閱針對 Azure AD 混合式身分識別解決方案選擇正確的驗證方法

在這兩個設定選項中,使用者會將其使用者名稱與密碼提交至 Azure AD,以驗證認證並發出票證。 當使用者登入 Azure AD 時,您的組織就不需要裝載及管理 AD FS 基礎結構。

Azure AD Connect 自動同步的其中一個使用者屬性是 ProxyAddresses。 若使用者在內部部署 AD DS 環境中,將電子郵件地址定義為 ProxyAddresses 屬性的一部分,其就會自動同步至 Azure AD。 此電子郵件地址就可直接作為 Azure AD 登入過程中的替代登入識別碼使用。

重要

只有租用戶已驗證網域中的電子郵件會同步至 Azure AD。 每個 Azure AD 租用戶都有一或多個您已證明具有擁有權的已驗證網域,而且會唯一繫結到您的租用戶。

如需詳細資訊,請參閱在 Azure AD 中新增及驗證自訂網域名稱

B2B 來賓使用者使用電子郵件地址登入

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

將電子郵件作為替代登入識別碼的方式適用於「攜帶您自己的登入識別碼」模型下的 Azure AD B2B 共同作業。 當首頁租用戶中啟用將電子郵件作為替代登入識別碼時,Azure AD 使用者可以使用資源租用戶端點上的非 UPN 電子郵件來執行來賓登入。 資源租用戶不需要採取任何動作,即可啟用此功能。

允許使用者使用電子郵件地址登入

注意

此設定選項使用 HRD 原則。 如需詳細資訊,請參閱 homeRealmDiscoveryPolicy 資源類型

一旦套用 ProxyAddresses 屬性的使用者,使用 Azure AD Connect 同步至 Azure AD,您就必須啟用讓使用者使用您租用戶替代登入識別碼電子郵件登入的功能。 此功能會告訴 Azure AD 登入伺服器,不只要檢查 UPN 值的登入識別碼,還要檢查電子郵件地址的 ProxyAddresses 值。

在預覽期間,您目前需要「全域管理員」權限,才能將電子郵件作為替代登入識別碼進行登入。 您可以使用 Azure 入口網站或 PowerShell 來設定該功能。

Azure 入口網站

  1. 以「全域管理員」身分登入 Azure 入口網站

  2. 搜尋並選取 [Azure Active Directory]。

  3. 從 Azure Active Directory 視窗左側的導覽功能表中,選取 [Azure AD Connect] > [將電子郵件作為替代登入識別碼]。

    Screenshot of email as alternate login I D option in the Azure portal.

  4. 按一下 [將電子郵件作為替代登入識別碼] 旁的核取方塊。

  5. 按一下 [檔案] 。

    Screenshot of email as alternate login I D blade in the Azure portal.

套用原則之後,最多可能需要 1 小時進行散佈,並讓使用者能夠使用其替代登入識別碼登入。

PowerShell

注意

此設定選項使用 HRD 原則。 如需詳細資訊,請參閱 homeRealmDiscoveryPolicy 資源類型

一旦套用 ProxyAddresses 屬性的使用者,使用 Azure AD Connect 同步至 Azure AD,您就必須啟用讓使用者為租用戶將電子郵件作為替代登入識別碼來登入的功能。 此功能會告訴 Azure AD 登入伺服器,不只要檢查 UPN 值的登入識別碼,還要檢查電子郵件地址的 ProxyAddresses 值。

在預覽期間,您目前只能使用 PowerShell 或 Microsoft Graph API 啟用將電子郵件作為替代登入識別碼的功能。 您需要有「全域管理員」權限,才能完成下列步驟:

  1. 以系統管理員身分開啟 PowerShell 工作階段,然後使用 Install-Module Cmdlet 安裝 Microsoft.Graph 模組:

    Install-Module Microsoft.Graph
    

    如需安裝的詳細資訊,請參閱安裝 Microsoft Graph PowerShell SDK

  2. 使用 Connect-MgGraph Cmdlet 登入您的 Azure AD 租用戶:

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

    此命令會要求您使用網頁瀏覽器進行驗證。

  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
    

    當已成功建立原則時,該命令會傳回原則識別碼,如下列範例輸出所示:

    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 屬性不存在或未啟用,或者您想要保留的原則上有其他屬性,請使用 Update-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
    

注意

套用原則之後,最多可能需要 1 小時進行散佈,並讓使用者能夠將電子郵件作為替代登入識別碼進行登入。

移除原則

若要移除 HRD 原則,請使用 Remove-MgPolicyHomeRealmDiscoveryPolicy Cmdlet:

Remove-MgPolicyHomeRealmDiscoveryPolicy -HomeRealmDiscoveryPolicyId "HRD_POLICY_ID"

啟用分段推出以測試使用電子郵件地址的使用者登入

注意

此設定選項使用分段推出原則。 如需詳細資訊,請參閱 featureRolloutPolicy 資源類型

分段推出原則可讓租用戶系統管理員為特定的 Azure AD 群組啟用功能。 建議租用戶系統管理員使用分段推出,測試使用電子郵件地址的使用者登入。 當系統管理員準備好將此功能部署至整個租用戶時,應該使用 HRD 原則

您需要有「全域管理員」權限,才能完成下列步驟:

  1. 以系統管理員身分開啟 PowerShell 工作階段,然後使用 Install-Module Cmdlet 安裝 AzureADPreview 模組:

    Install-Module AzureADPreview
    

    若出現提示,請選取 [Y] 來安裝 NuGet,或從未受信任的存放庫安裝。

  2. 以全域管理員身分使用 Connect-AzureAD Cmdlet 登入您的 Azure AD 租用戶:

    Connect-AzureAD
    

    命令會傳回您帳戶、環境與租用戶識別碼的相關資訊。

  3. 使用下列 Cmdlet 列出所有現有的分段推出原則:

    Get-AzureADMSFeatureRolloutPolicy
    
  4. 若沒有此功能的現有分段推出原則,請建立新的分段推出原則,並記住原則識別碼:

    $AzureADMSFeatureRolloutPolicy = @{
       Feature    = "EmailAsAlternateId"
       DisplayName = "EmailAsAlternateId Rollout Policy"
       IsEnabled   = $true
    }
    New-AzureADMSFeatureRolloutPolicy @AzureADMSFeatureRolloutPolicy
    
  5. 尋找要新增至分段推出原則之群組的 directoryObject 識別碼。 請注意針對 Id 參數所傳回的值,因為其將用於下一個步驟中。

    Get-AzureADMSGroup -SearchString "Name of group to be added to the staged rollout policy"
    
  6. 將群組新增至分段推出原則,如下列範例所示。 以步驟 4 中原則識別碼所傳回的值取代 -Id 參數中的值,並以步驟 5 中所述的 Id 取代 -RefObjectId 參數中的值。 最多可能需要 1 小時,群組中的使用者才能使用將電子郵件作為替代登入識別碼來登入 Azure AD。

    Add-AzureADMSFeatureRolloutPolicyDirectoryObject -Id "ROLLOUT_POLICY_ID" -RefObjectId "GROUP_OBJECT_ID"
    

針對新增至群組的新成員,最多可能需要 24 小時,他們才能使用將電子郵件作為替代登入識別碼來登入 Azure AD。

移除群組

若要從分段推出原則中移除群組,請執行下列命令:

Remove-AzureADMSFeatureRolloutPolicyDirectoryObject -Id "ROLLOUT_POLICY_ID" -ObjectId "GROUP_OBJECT_ID" 

移除原則

若要移除分段推出原則,請先停用該原則,然後將其從系統中移除:

Set-AzureADMSFeatureRolloutPolicy -Id "ROLLOUT_POLICY_ID" -IsEnabled $false 
Remove-AzureADMSFeatureRolloutPolicy -Id "ROLLOUT_POLICY_ID"

測試使用電子郵件地址的使用者登入

若要測試使用者是否可以使用電子郵件登入,請移至 https://myprofile.microsoft.com,並使用非 UPN 電子郵件 (例如 balas@fabrikam.com) 登入。 登入體驗看起來應該與使用 UPN 登入相同。

疑難排解

若使用者在使用其電子郵件地址登入時遇到問題,請檢閱下列疑難排解步驟:

  1. 請確保在啟用將電子郵件作為替代登入識別碼之後,至少已經過 1 小時。 若最近才將使用者新增至群組以進行分段推出原則,請確保在將該使用者新增至群組之後,至少已經過 24 小時。

  2. 若使用 HRD 原則,請確認 Azure AD HomeRealmDiscoveryPolicyAlternateIdLogin 定義屬性設定為 ["Enabled": true],並將 IsOrganizationDefault 屬性設定為 [True]:

    Get-AzureADPolicy | Where-Object Type -eq "HomeRealmDiscoveryPolicy" | Format-List *
    

    若使用分段推出原則,請確認 Azure AD FeatureRolloutPolicyIsEnabled 屬性設定為 [True]:

    Get-AzureADMSFeatureRolloutPolicy
    
  3. 請確保使用者帳戶已在 Azure AD 的 ProxyAddresses 屬性中設定其電子郵件地址。

登入記錄

Screenshot of Azure A D sign-in logs showing email as alternate login I D activity.

如需詳細資訊,您可以檢閱 Azure AD 中的登入記錄。 將電子郵件作為替代登入識別碼的登入,將會在 Sign-in identifier type 欄位中發出 proxyAddress,並在 Sign-in identifier 欄位中發出輸入的使用者名稱。

僅限雲端與同步處理之使用者之間衝突的值

在租用戶中,僅限雲端使用者的 UPN 可擁有與從內部部署目錄同步之另一個使用者 Proxy 位址相同的值。 在此案例中,啟用功能之後,僅限雲端的使用者將無法使用其 UPN 登入。 以下是偵測此問題執行個體的步驟。

  1. 以系統管理員身分開啟 PowerShell 工作階段,然後使用 Install-Module Cmdlet 安裝 AzureADPreview 模組:

    Install-Module AzureADPreview
    

    若出現提示,請選取 [Y] 來安裝 NuGet,或從未受信任的存放庫安裝。

  2. 以全域管理員身分使用 Connect-AzureAD Cmdlet 登入您的 Azure AD 租用戶:

    Connect-AzureAD
    
  3. 取得受影響的使用者。

    # Get all users
    $allUsers = Get-AzureADUser -All $true
    
    # 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
    

後續步驟

若要深入了解混合式身分識別,例如 Azure AD App Proxy 或 Azure AD Domain Services,請參閱用於存取及管理內部部署工作負載的 Azure AD 混合式身分識別

如需混合式身分識別作業的詳細資訊,請參閱如何執行密碼雜湊同步傳遞驗證同步工作。