分享方式:


管理與 Microsoft Entra ID 中的使用者不相符的應用程式中的對應和使用者

在將現有應用程式與 Microsoft Entra ID 整合以進行佈建或單一登入 (SSO) 時,您可能會判斷應用程式資料存放區中的某些使用者未對應至 Microsoft Entra ID 中的使用者,或不符合 Microsoft Entra ID 中的任何使用者。

Microsoft Entra 佈建服務依賴可設定的比對規則來判斷 Microsoft Entra ID 中的使用者是否對應至用程式中的使用者,從而在應用程式中搜尋 Microsoft Entra ID 使用者中具有相符屬性的使用者。 例如,假設比對規則是將 Microsoft Entra ID 使用者的 userPrincipalName 屬性與應用程式的 userName 屬性進行比較。 若將 Microsoft Entra ID 中 userPrincipalName 值為 alice.smith@contoso.com 的使用者指派給應用程式的角色,Microsoft Entra 佈建服務將使用諸如 userName eq "alice.smith@contoso.com" 之類的查詢來執行應用程式搜尋。 如果應用程式搜尋指出沒有任何相符的使用者,則 Microsoft Entra 佈建服務會在應用程式中建立新的使用者。

如果應用程式還沒有任何使用者,則此流程會將 Microsoft Entra ID 中指派的使用者填入應用程式的資料存放區。 不過,如果應用程式已經有使用者,則可能會發生以下兩種情況。 第一,應用程式中可能有人擁有使用者帳戶,但比對找不到他們;可能是因為使用者在應用程式中表示為 asmith@contoso.com 而不是 alice.smith@contoso.com,因此 Microsoft Entra 佈建服務執行的搜尋找不到他們。 在這種情況下,人員最後可能會在應用程式中使用重複的使用者。 第二,應用程式中可能有人擁有使用者帳戶,但在 Microsoft Entra ID 中沒有任何使用者。 在這種情況下,Microsoft Entra 佈建服務不會與應用程式中的那些使用者互動,但是,如果應用程式設定為依賴 Microsoft Entra ID 作為其唯一識別提供者,則那些使用者不再無法登入:應用程式會重新導向轉接人員使用 Microsoft Entra ID 登入,但人員在 Microsoft Entra ID 中沒有使用者。

Microsoft Entra ID 與現有應用程式的資料存放區之間出現這些不一致的原因有很多,包括:

  • 應用程式系統管理員直接在應用程式中建立使用者,例如承包商或廠商,他們並未顯示在 HR 來源記錄系統中,但確實需要應用程式存取權,
  • 身分識別和屬性變更 (例如人員變更姓名) 未傳送到 Microsoft Entra ID 或應用程式,因此該表示在某個或另一個系統中已過期,或者
  • 組織使用身分識別管理產品,該產品獨立佈建 Windows Server AD 和具有不同社群的應用程式。 例如,商店員工需要應用程式存取權,但不需要 Exchange 信箱,因此商店員工不會顯示在 Windows Server AD 或 Microsoft Entra ID 中。

對存在現有使用者的應用程式啟用佈建或 SSO 之前,您應該檢查以確保使用者相符,然後調查並解決應用程式中不相符的使用者。 本文概述如何解決使用者無法比對的不同情況的選項。

判斷應用程式中是否存在不相符的使用者

如果您已判定應用程式中的使用者清單與 Microsoft Entra ID 中的使用者不相符,請繼續進行下一節。

判斷應用程式中哪些使用者與 Microsoft Entra ID 中的使用者不相符的過程,取決於應用程式與 Microsoft Entra ID 的整合方式。

  • 若使用 SAP Cloud Identity Services,請依照 SAP Cloud Identity Services 佈建教學課程完成步驟,以確保現有 SAP Cloud Identity Services 使用者具有必要的比對屬性。 在該教學課程中,您會將使用者清單從 SAP Cloud Identity Services 匯出為 CSV 檔案,然後使用 PowerShell 來比對那些使用者與 Microsoft Entra ID 中的使用者。

  • 若應用程式是使用 LDAP 目錄,請依照 LDAP 目錄佈建教學課程完成步驟,以收集 LDAP 目錄中的現有使用者。 在該教學課程中,使用 PowerShell 來比對那些使用者與 Microsoft Entra ID 中的使用者。

  • 對於其他應用程式,包括具有 SQL 資料庫的應用程式或在應用程式庫中具有佈建支援的應用程式,請依照教學課程的管理應用程式的現有使用者完成步驟,以確認 Microsoft Entra ID 具有與應用程式使用者相符的使用者。

  • 對於沒有佈建介面的其他應用程式,請依照教學課程的管理不支援佈建的應用程式的使用者完成步驟,以確認 Microsoft Entra ID 具有與應用程式使用者相符的使用者。

在這些教學課程中提供的 PowerShell 指令碼都完成時,如果應用程式中有任何記錄不在 Microsoft Entra ID 中,將顯示一則錯誤。 如果未能依據 Microsoft Entra ID 中的使用者找到應用程式資料存放區中使用者的所有記錄,您就必須調查哪些記錄不相符及其原因,然後使用下列其中一項來解決比對問題。

確保應用程式與 Microsoft Entra ID 之間的使用者相符的選項

本節提供幾個選項用來解決應用程式中不相符使用者的問題。 根據組織的目標以及 Microsoft Entra ID 與應用程式之間的資料問題,為每位使用者選取適當的選項。 可能沒有任何單一選項可適用於特定應用程式中的所有使用者。

選項 佈建之前所需的更新
刪除應用程式中的測試使用者 應用程式中的使用者
為不再屬於組織的人員,刪除應用程式中的使用者 應用程式中的使用者
刪除應用程式中的使用者,並透過 Microsoft Entra ID 重新建立使用者 應用程式中的使用者
更新應用程式中使用者的比對屬性 應用程式中的使用者
使用新屬性更新應用程式中的使用者 應用程式中的使用者
電子郵件地址與使用者主體名稱不相符時,請變更比對規則或屬性 應用程式或 Microsoft Entra 應用程式比對規則中的使用者
更新 Microsoft Entra ID 中使用者的比對屬性 Microsoft Entra ID 中的使用者
更新 Microsoft Entra Connect Sync 或 Cloud Sync 佈建規則,以同步必要的使用者和屬性 Microsoft Entra Connect Sync 或 Microsoft Entra Cloud Sync,這會更新 Microsoft Entra ID 中的使用者
使用新屬性更新 Microsoft Entra ID 中的使用者 Microsoft Entra ID 中的使用者
將比對規則變更為 Microsoft Entra ID 中已填入的不同屬性 Microsoft Entra 應用程式比對規則
為應用程式中需要持續應用程式存取權的使用者,在 Windows Server AD 中建立使用者 Windows Server AD 中的使用者,這會更新使用者 Microsoft Entra ID
為應用程式中需要持續應用程式存取權的使用者,在 Microsoft Entra ID 中建立使用者 Microsoft Entra ID 中的使用者
在應用程式和 Microsoft Entra ID 中維護個別且不相符的使用者

刪除應用程式中的測試使用者

應用程式中可能存在初始部署留下的測試使用者。 如果存在不再需要的使用者,請將他們從應用程式中刪除。

對於不再屬於組織的人員,請從應用程式中刪除使用者

使用者可能不再隸屬於組織,並且不再需要存取應用程式,但仍是應用程式資料來源中的使用者。 如果應用程式系統管理員省略移除使用者,或未獲告知需要變更,就可能會發生這種情況。 如果不再需要該使用者,請將他從應用程式中刪除。

從應用程式中刪除使用者,並透過 Microsoft Entra ID 重新建立使用者

如果應用程式目前未廣泛使用,或未維護任何每位使用者狀態,則另一個選項是從應用程式中刪除使用者,這樣就不再有任何不相符的使用者。 然後,在使用者要求或在 Microsoft Entra ID 中指派應用程式時,他們將獲佈建存取權。

更新應用程式中使用者的比對屬性

使用者可能存在於應用程式和 Microsoft Entra ID 中,但應用程式中的使用者可能缺少比對所需的屬性,或屬性有錯誤的值。

例如,SAP 系統管理員使用其管理主控台在 SAP Cloud Identity Services 中建立使用者時,該使用者可能沒有 userName 屬性。 然而,該屬性可能是用來與 Microsoft Entra ID 中使用者進行比對的屬性。 如果 userName 屬性是要用於比對的屬性,您就需要 SAP 系統管理員更新那些現有的 SAP Cloud Identity Services 使用者,以取得 userName 屬性的值。

例如,使用者第一次新增至應用程式時,應用程式系統管理員會將使用者的電子郵件地址設定為應用程式中使用者的屬性 mail。 不過,稍後該人員的電子郵件地址和 userPrincipalName 會在 Microsoft Entra ID 中發生變更。 但是,如果應用程式不需要電子郵件地址,或者電子郵件提供者具有允許舊電子郵件地址繼續轉發的重新導向轉接功能,則應用程式系統管理員可能會忽略需要在應用程式的資料來源中更新 mail 屬性。 應用程式系統管理員可以透過將應用程式使用者的 mail 屬性變更為目前的值,或變更比對規則來解決此不一致問題,如以下各節所述。

使用新屬性更新應用程式中的使用者

組織先前的身分識別管理系統可能已在應用程式中將使用者建立為本機使用者。 如果組織當時沒有單一識別提供者,則應用程式中的那些使用者不需要任何屬性來與任何其他系統相互關聯。 例如,先前的身分識別管理產品根據授權 HR 來源在應用程式中建立使用者。 該身分識別管理系統會維護其在應用程式中建立的使用者與 HR 來源之間的相互關聯,並且不會向應用程式提供任何 HR 來源識別碼。 稍後,嘗試將應用程式連線到從該相同 HR 來源填入的 Microsoft Entra ID 租用戶時,Microsoft Entra ID 可能具有應用程式中相同所有人員的使用者,但所有使用者的比對都失敗,因為他們沒有共同屬性。

若要解決該比對問題,請執行下列步驟。

  1. 選取應用程式中現有未使用的使用者屬性,或將新屬性新增至應用程式中的使用者結構描述。
  2. 使用 Microsoft Entra ID 中使用者包含的授權來源資料 (例如員工識別碼或電子郵件地址) 填入應用程式中所有使用者的該屬性。
  3. 更新應用程式的 Microsoft Entra 應用程式佈建屬性對應設定,讓該屬性包含在比對規則中。

若電子郵件地址與使用者主體名稱不相符,請變更比對規則或屬性

預設情況下,應用程式的某些 Microsoft Entra 佈建服務對應會傳送 userPrincipalName 屬性,以符合應用程式電子郵件地址屬性。 某些組織存在使用者的主要電子郵件地址與其使用者主體名稱不同的情況。 如果應用程式將電子郵件地址儲存為使用者的屬性,而不是 userPrincipalName,您就必須變更應用程式中的使用者,或比對規則。

  • 若打算使用從 Microsoft Entra ID 到應用程式的單一登入,則可能希望變更應用程式,以在使用者上新增屬性來保留 userPrincipalName。 然後,在應用程式中每個使用者的該屬性中填入 Microsoft Entra ID 中使用者的 userPrincipalName,並更新 Microsoft Entra 應用程式佈建設定,讓該屬性包含在比對規則中。
  • 若不打算使用 Microsoft Entra ID 的單一登入,替代方法是更新 Microsoft Entra 應用程式佈建屬性對應設定,以符合比對規則中 Microsoft Entra 使用者的電子郵件地址屬性。

更新 Microsoft Entra ID 中使用者的比對屬性

在某些情況下,用於比對的屬性在 Microsoft Entra ID 使用者中的值已過期。 例如,某人員已變更姓名,但並未在 Microsoft Entra ID 使用者中變更姓名。

如果僅在 Microsoft Entra ID 中建立和維護使用者,您應該更新使用者使其具有正確的屬性。 如果使用者屬性源自上游系統 (例如 Windows Server AD 或 HR 來源),則您必須變更上游來源中的值,並等待變更顯示在 Microsoft Entra ID 中。

更新 Microsoft Entra Connect Sync 或 Cloud Sync 佈建規則,以同步必要的使用者和屬性

在某些情況下,先前的身分識別管理系統已在 Windows Server AD 使用者中填入適當的屬性,該屬性可以作為與另一個應用程式的比對屬性。 例如,如果先前的身分識別管理系統已連線到 HR 來源,則先前的身分識別管理系統會在 AD 使用者的 employeeId 屬性中填入使用者的員工 ID。 再例如,先前的身分識別管理系統已將應用程式唯一使用者 ID 作為擴充屬性寫入 Windows Server AD 結構描述中。 但是,如果未選取那些屬性以同步處理到 Microsoft Entra ID,或者使用者超出同步處理到 Microsoft Entra ID 的範圍,則使用者社群的 Microsoft Entra ID 表示可能不完整。

若要解決此問題,您必須變更 Microsoft Entra Connect Sync 或 Microsoft Entra Cloud Sync 設定,以確保在 Windows Server AD 中同時也在應用程式中的所有適當使用者都位於佈建至 Microsoft Entra ID 的範圍內,而且那些使用者的同步處理屬性包括將用於比對用途的屬性。 若使用 Microsoft Entra Connect Sync,請參閱 Microsoft Entra Connect Sync:設定篩選Microsoft Entra Connect Sync:目錄擴充。 若使用 Microsoft Entra Cloud Sync,請參閱 Microsoft Entra Cloud Sync 中的屬性對應雲端同步目錄擴充和自訂屬性對應

使用新屬性更新 Microsoft Entra ID 中的使用者

在某些情況下,應用程式可能會保留使用者目前未儲存在使用者的 Microsoft Entra ID 結構描述中的唯一識別碼。 假如您是使用 SAP Cloud Identity Services,可能會希望將 SAP 使用者 ID 用作比對屬性;如果是使用 Linux 系統,則可能希望將 Linux 使用者 ID 用作比對屬性。 不過,那些屬性不是 Microsoft Entra ID 使用者結構描述的一部分,因此可能不會顯示在 Microsoft Entra ID 中的任何使用者上。

若要使用新屬性進行比對,請執行下列步驟。

  1. 選取 Microsoft Entra ID 中現有未使用的擴充屬性,或使用新屬性擴充 Microsoft Entra 使用者結構描述。
  2. 使用授權來源資料 (例如應用程式或 HR 系統) 填入 Microsoft Entra ID 中所有使用者的該屬性。 如果使用者是從 Windows Server AD 同步或從 HR 系統佈建的,您可能需要在該上游來源中進行該變更。
  3. 更新 Microsoft Entra 應用程式佈建屬性對應設定,並在比對規則中包含該屬性。

將比對規則變更為與 Microsoft Entra ID 中已填入的不同屬性

應用程式庫中應用程式的預設比對規則依賴所有 Microsoft 客戶中所有 Microsoft Entra ID 使用者通常存在的屬性,例如 userPrincipalName。 這些規則適用於一般用途的測試,或佈建至目前沒有使用者的新應用程式。 不過,許多組織可能已在 Microsoft Entra ID 使用者中填入與其組織相關的其他屬性,例如員工 ID。 如果存在另一個適合比對的屬性,請更新 Microsoft Entra 應用程式佈建屬性對應設定,並在比對規則中包含該屬性。

設定從 HR 來源到 Microsoft Entra ID 的輸入佈建

在理想情況下,獨立將使用者佈建至多個應用程式的組織,應該依賴衍生自 HR 系統等授權來源的使用者通用識別碼。 許多 HR 系統都具有可良好運作的識別碼屬性,例如可將 employeeId 視為唯一,因此不會有兩個人具有相同的員工 ID。 如果您有 HR 來源 (例如 Workday 或 SuccessFactors),則從該來源帶入屬性 (例如 employeeId) 通常會建立適用的比對規則。

若要將屬性與從授權來源獲取的值進行比對,請執行以下步驟。

  1. 選擇適當的 Microsoft Entra ID 使用者結構描述屬性,或使用新屬性擴充 Microsoft Entra 使用者結構描述,其值對應至應用程式中使用者的對等屬性。
  2. 請確定在 Microsoft Entra ID 和應用程式中具有使用者的所有人員的 HR 來源中也存在該屬性。
  3. 設定從該 HR 來源到 Microsoft Entra ID 的輸入佈建。
  4. 等待 Microsoft Entra ID 中的使用者更新為新屬性。
  5. 更新 Microsoft Entra 應用程式佈建屬性對應設定,並在比對規則中包含該屬性。

在 Windows Server AD 為應用程式中需要持續應用程式存取權的使用者建立使用者

如果應用程式中的某些使用者未對應至授權 HR 來源中的人員,但日後需要存取 Windows Server AD 型應用程式和 Microsoft Entra ID 整合型應用程式,並且您的組織是使用 Microsoft Entra Connect Sync 或 Microsoft Entra Cloud Sync 將使用者從Windows Server AD 佈建到 Microsoft Entra ID,則您可以在Windows Server AD 中為每個尚未存在的使用者建立一個使用者。

如果使用者不需要存取 Windows Server AD 型應用程式,則在 Microsoft Entra ID 中建立使用者,如下一節所述。

在 Microsoft Entra ID 為應用程式中需要持續應用程式存取權的使用者建立使用者

如果應用程式中的某些使用者未對應至授權 HR 來源中的人員,但需要持續存取並受 Microsoft Entra 控管,您可以為他們建立 Microsoft Entra 使用者。 您可以使用下列其中一項來大量建立使用者:

請務必為這些新使用者填入必要的屬性,以供 Microsoft Entra ID 稍後比對應用程式中的現有使用者,以及 Microsoft Entra ID 要求的屬性,包括 userPrincipalNamemailNicknamedisplayName。 在目錄的所有使用者中 userPrincipalName 必須是唯一的。

使用 PowerShell 大量建立使用者

本節說明如何使用 Microsoft Graph PowerShell Cmdlet 與 Microsoft Entra ID 互動。

組織在此情況下第一次使用這些 Cmdlet 時,您必須是全域管理員角色,才能在租用戶中使用 Microsoft Graph PowerShell。 後續的互動可以使用特殊權限較低的角色,例如:使用者系統管理員。

  1. 如果您已經有一個 PowerShell 工作階段,且在其中發現應用程式中的使用者不在 Microsoft Entra ID 中,請繼續執行下面的步驟 6。 否則,請開啟 PowerShell。

  2. 如果您尚未安裝 Microsoft Graph PowerShell 模組,請使用此命令來安裝 Microsoft.Graph.Users 模組和其他模組:

    Install-Module Microsoft.Graph
    

    如果已安裝這些模組,請確定是使用最新版本:

    Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
    
  3. 連線至 Microsoft Entra ID:

    $msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All"
    
  4. 如果這是您第一次使用此命令,可能必須同意允許 Microsoft Graph 命令列工具具有這些權限。

  5. 將應用程式中的一組使用者陣列帶入 PowerShell 環境,該陣列還包含 Microsoft Entra ID 必要屬性的欄位;使用者主體名稱、郵件暱稱和使用者全名。 此指令碼假設陣列 $dbu_not_matched_list 包含來自應用程式但不相符的使用者。

    $filename = ".\Users-to-create.csv"
    $bu_not_matched_list = Import-Csv -Path $filename -Encoding UTF8
    
  6. 在 PowerShell 工作階段中指定要建立的使用者陣列中的哪些資料行對應至 Microsoft Entra ID 必要屬性。 例如,資料庫中的使用者可能有名為 EMail 之資料行中的值是您想要作為 Microsoft Entra 使用者主體名稱的值、資料行 Alias 中的值包含 Microsoft Entra ID 郵件暱稱,且資料行 Full name 中的值包含使用者的顯示名稱:

    $db_display_name_column_name = "Full name"
    $db_user_principal_name_column_name = "Email"
    $db_mail_nickname_column_name = "Alias"
    
  7. 在文字編輯器中開啟下列指令碼。 您可能需要修改此指令碼,以新增應用程式所需的 Microsoft Entra 屬性,或者 $azuread_match_attr_name 既不是 mailNickname 也不是 userPrincipalName,才能提供該 Microsoft Entra 屬性。

    $dbu_missing_columns_list = @()
    $dbu_creation_failed_list = @()
    foreach ($dbu in $dbu_not_matched_list) {
       if (($null -ne $dbu.$db_display_name_column_name -and $dbu.$db_display_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_user_principal_name_column_name -and $dbu.$db_user_principal_name_column_name.Length -gt 0) -and
           ($null -ne $dbu.$db_mail_nickname_column_name -and $dbu.$db_mail_nickname_column_name.Length -gt 0)) {
          $params = @{
             accountEnabled = $false
             displayName = $dbu.$db_display_name_column_name
             mailNickname = $dbu.$db_mail_nickname_column_name
             userPrincipalName = $dbu.$db_user_principal_name_column_name
             passwordProfile = @{
               Password = -join (((48..90) + (96..122)) * 16 | Get-Random -Count 16 | % {[char]$_})
             }
          }
          try {
            New-MgUser -BodyParameter $params
          } catch { $dbu_creation_failed_list += $dbu; throw }
       } else {
          $dbu_missing_columns_list += $dbu
       }
    }
    
  8. 將文字編輯器中產生的指令碼貼到 PowerShell 工作階段中。 如果出現任何錯誤,您必須先更正錯誤,然後才能繼續。

在應用程式和 Microsoft Entra ID 中維護個別且不相符的使用者

應用程式的資料來源中可能有超級管理使用者未對應至 Microsoft Entra ID 中的任何特定人員。 如果沒有為他們建立 Microsoft Entra 使用者,則無法透過 Microsoft Entra ID 或 Microsoft Entra ID Governance 管理那些使用者。 由於這些使用者將無法使用 Microsoft Entra ID 登入,因此如果您將應用程式設定為使用 Microsoft Entra ID 作為識別提供者,請確保那些使用者不在使用 Microsoft Entra ID 進行驗證的範圍內。

重新匯出使用者

更新 Microsoft Entra 使用者、應用程式中的使用者或 Microsoft Entra 應用程式比對規則之後,您應該重新匯出並再次執行應用程式的比對程序,以確保所有使用者都相互關聯。

  • 若使用 SAP Cloud Identity Services,請依照 SAP Cloud Identity Services 佈建教學課程開始執行步驟,以確保現有 SAP Cloud Identity Services 使用者具有必要的比對屬性。 在該教學課程中,您會將使用者清單從 SAP Cloud Identity Services 匯出為 CSV 檔案,然後使用 PowerShell 來比對那些使用者與 Microsoft Entra ID 中的使用者。

  • 若應用程式是使用 LDAP 目錄,請依照 LDAP 目錄佈建教學課程開始執行步驟,以收集 LDAP 目錄中的現有使用者。

  • 對於其他應用程式,包括具有 SQL 資料庫的應用程式或在應用程式庫中具有佈建支援的應用程式,請依照教學課程的管理應用程式的現有使用者開始執行步驟,以收集應用程式中的現有使用者。

將使用者指派給應用程式角色並啟用佈建

完成必要的更新並確認應用程式中的所有使用者與 Microsoft Entra ID 中的使用者相符後,您應該將 Microsoft Entra ID 中需要存取應用程式的使用者指派給 Microsoft Entra 應用程式的應用程式角色,然後啟用對應用程式的佈建。

下一步