使用電子郵件作為替代登入識別碼 (預覽版來登入 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,而不是繼續使用舊版 balas@contoso.com UPN 登入,則可以使用電子郵件作為替代登入識別碼。 若要存取應用程式或服務,使用者會使用其非 UPN 電子郵件(例如)登入 Azure AD balas@fabrikam.com

本文說明如何啟用和使用電子郵件作為替代登入識別碼。

開始之前

以下是您需要知道的電子郵件替代登入識別碼:

  • Azure AD Free edition 和更新版本提供此功能。
  • 此功能可讓經過驗證的網域 ProxyAddresses 登入,以進行雲端驗證的 Azure AD 使用者。
  • 當使用者以非 UPN 電子郵件登入時, unique_name preferred_username (如果 識別碼權杖 中有) ,則會有非 upn 電子郵件的值。
  • 有兩個選項可設定功能:
    • 主領域探索 (HRD) 原則 -使用此選項可為整個租使用者啟用此功能。 需要全域管理員許可權。
    • 分段推出原則 -使用此選項來測試特定 Azure AD 群組的功能。 需要全域管理員許可權。

預覽限制

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

  • 使用者可能會看到其 UPN,即使他們使用非 UPN 電子郵件登入也一樣。 可能會看到下列範例行為:

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

    • Identity Protection 不符合具有 洩漏認證 風險偵測的非 UPN 電子郵件。 此風險偵測會使用 UPN 來比對已洩漏的認證。 如需詳細資訊,請參閱 Azure AD Identity Protection 風險偵測和補救
    • 未完全支援傳送給非 UPN 電子郵件的 B2B 邀請。 接受傳送至非 UPN 電子郵件的邀請之後,使用非 UPN 電子郵件登入可能無法在資源租使用者端點上的來賓使用者使用。
    • 當使用者使用非 UPN 電子郵件登入時,他們無法變更其密碼。 Azure AD 自助式密碼重設 (SSPR) 應能如預期般運作。 在 SSPR 期間,如果使用者透過替代電子郵件驗證其身分識別,則可能會看到其 UPN。
  • 不支援下列案例。 使用非 UPN 電子郵件登入:

    • 混合式 Azure AD 已加入裝置
    • Azure AD 加入裝置
    • 商務用 Skype
    • MacOS 上的 Microsoft Office
    • 當登入流程不包含 Multi-Factor Authentication 時,OneDrive ()
    • Web 上的 Microsoft 小組
    • 資源擁有者密碼認證 (ROPC) 流程
  • 在 HRD 原則中對功能設定所做的變更不會明確顯示在 audit 記錄檔中。

  • 針對包含在多個分段推出原則中的使用者,分段推出原則無法如預期般運作。

  • 在租使用者中,僅限雲端使用者的 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 屬性定義一或多個電子郵件地址。 然後, ProxyAddresses 會使用 Azure AD Connect 自動同步處理 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 中新增及驗證自訂網域名稱

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

注意

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

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

在預覽期間,您目前只能使用 PowerShell 啟用以替代登入識別碼電子郵件登入的功能。 您需要 全域管理員 許可權,才能完成下列步驟:

  1. 以系統管理員身分開啟 PowerShell 會話,然後使用 安裝模組Cmdlet 來安裝 AzureADPreview 模組:

    Install-Module AzureADPreview
    

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

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

    Connect-AzureAD
    

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

  3. 使用 new-azureadpolicy Cmdlet 檢查 HomeRealmDiscoveryPolicy 是否已存在於您的租使用者中,如下所示:

    Get-AzureADPolicy | Where-Object Type -eq "HomeRealmDiscoveryPolicy" | Format-List *
    
  4. 若目前未設定任何原則,此命令就不會傳回任何內容。 若傳回原則,請略過此步驟,並繼續下一個步驟以更新現有的原則。

    若要將 HomeRealmDiscoveryPolicy 原則新增至租用戶,請使用 New-AzureADPolicy Cmdlet,並將 AlternateIdLogin 屬性設為 "Enabled": true,如下列範例所示:

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

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

    Id                                   DisplayName                 Type                     IsOrganizationDefault
    --                                   -----------                 ----                     ---------------------
    5de3afbe-4b7a-4b33-86b0-7bbe308db7f7 BasicAutoAccelerationPolicy HomeRealmDiscoveryPolicy True
    
  5. 若已經有設定的原則,請檢查是否已啟用  AlternateIdLogin   屬性,如下列範例原則輸出所示:

    Id : 5de3afbe-4b7a-4b33-86b0-7bbe308db7f7
    OdataType :
    AlternativeIdentifier :
    Definition : {{"HomeRealmDiscoveryPolicy" :{"AlternateIdLogin":{"Enabled": true}}}}
    DisplayName : BasicAutoAccelerationPolicy
    IsOrganizationDefault : True
    KeyCredentials : {}
    Type : HomeRealmDiscoveryPolicy
    

    若原則存在,但 AlternateIdLogin 屬性不存在或未啟用,或者您想要保留的原則上有其他屬性,請使用 Set-AzureADPolicy Cmdlet 來更新現有的原則。

    重要

    當您更新原則時,請確定您包含任何舊的設定與新的  AlternateIdLogin 屬性。

    下列範例會新增  AlternateIdLogin 屬性,並保留可能已經設定的  AllowCloudPasswordValidation 屬性:

    $AzureADPolicyDefinition = @(
      @{
         "HomeRealmDiscoveryPolicy" = @{
            "AllowCloudPasswordValidation" = $true
            "AlternateIdLogin" = @{
               "Enabled" = $true
            }
         }
      } | ConvertTo-JSON -Compress
    )
    $AzureADPolicyParameters = @{
      ID                    = "b581c39c-8fe3-4bb5-b53d-ea3de05abb4b"
      Definition            = $AzureADPolicyDefinition
      DisplayName           = "BasicAutoAccelerationPolicy"
      IsOrganizationDefault = $true
      Type                  = "HomeRealmDiscoveryPolicy"
    }
    
    Set-AzureADPolicy @AzureADPolicyParameters
    

    確認更新的原則顯示您的變更,而且已啟用 AlternateIdLogin 屬性:

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

套用原則之後,最多可能需要1小時的時間來傳播,讓使用者能夠使用其替代登入識別碼進行登入。

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

注意

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

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

您需要 全域管理員 許可權,才能完成下列步驟:

  1. 以系統管理員身分開啟 PowerShell 會話,然後使用 安裝模組Cmdlet 來安裝 AzureADPreview 模組:

    Install-Module AzureADPreview
    

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

  2. 使用 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. 將群組新增至分段推出原則,如下列範例所示。 將 -Id 參數中的值取代為步驟4中原則識別碼所傳回的值,並將 -RefObjectId 參數中的值取代為步驟5中所述的 識別碼 。 最多可能需要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": trueIsOrganizationDefault 屬性設定為 true

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

    如果使用分段推出原則,請確認 Azure AD FeatureRolloutPolicyIsEnabled 屬性設定為 True

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

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

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

  1. 以系統管理員身分開啟 PowerShell 會話,然後使用 安裝模組Cmdlet 來安裝 AzureADPreview 模組:

    Install-Module AzureADPreview
    

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

  2. 使用 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 混合式身分識別

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