共用方式為


管理在 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 中具有 userPrincipalNamealice.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 識別碼中沒有使用者。

Microsoft Entra ID 與現有應用程式資料存放區之間的這些不一致,可能會因為許多原因而發生,包括:

  • 應用程式管理員會直接在應用程式中建立使用者,例如,對於未在記錄 HR 來源系統中代表的承包商或廠商,但確實需要應用程式存取權,
  • 身分和屬性變更,例如變更其名稱的人員,未傳送至 Microsoft Entra 身分識別或應用程式,因而在其中一個或另一個系統中的訊息已過期,或
  • 組織正在使用一款身分識別管理產品,該產品能夠獨立地為 Windows Server AD 和應用程式分別提供不同社群的配置。 例如,儲存員工需要應用程式存取,但不需要 Exchange 信箱,因此儲存員工不會以 Windows Server AD 或Microsoft Entra ID 表示。

在啟用設置或 SSO 給有現有使用者的應用程式之前,您應該檢查以確保使用者對應,並調查和解決那些在應用程式中沒有對應的使用者。 本文概述如何解決用戶無法比對的不同情況的選項。

判斷應用程式中是否有不符合的使用者

如果您已經確認應用程式中的使用者清單與 Microsoft Entra ID 中的使用者不符,請繼續閱讀下一節。

判斷應用程式中哪些使用者與 Microsoft Entra ID 中的使用者不匹配的過程,取決於應用程式目前或將來如何與 Microsoft Entra ID 整合。

  • 如果您使用 SAP 雲端身分識別服務,請遵循 SAP 雲端身分識別服務布建教學指南 一步一步操作,以確保現有的 SAP 雲端身分識別服務使用者具有必要的相符屬性。 在本教學課程中,您會將使用者清單從 SAP Cloud Identity Services 導出至 CSV 檔案,然後使用 PowerShell 將這些使用者比對Microsoft Entra ID 中的使用者。

  • 如果您的應用程式使用LDAP目錄,請遵循 LDAP目錄設定指南 的步驟來從LDAP目錄中收集現有的使用者。 在該教學課程中,使用 PowerShell 將這些使用者與 entra ID Microsoft 中的使用者比對。

  • 對於其他應用程式,包括具有 SQL 資料庫或具有應用連結庫中布建支援的應用程式,請遵循教學課程,透過步驟 控管應用程式的現有使用者 ,以確認Microsoft Entra ID 具有符合應用程式用戶的使用者。

  • 對於沒有布建介面的其他應用程式,請遵循教學課程來管理不支援布建的應用程式使用者,以便通過步驟確認Microsoft Entra ID中的使用者與應用程式的用戶相符

當這些教學課程中提供的 PowerShell 腳本完成時,如果應用程式中的任何記錄未能在 Microsoft Entra ID 中找到,它會顯示錯誤。 如果應用程式資料存放區中並非所有使用者的記錄都能夠在 Microsoft Entra ID 中找到,您必須調查哪些記錄不符合,以及原因,並使用下一節中的其中一個選項解決比對問題。

確保應用程式中的用戶與 Microsoft Entra ID 匹配的選項

本節提供數個選項來解決應用程式中不相符的使用者。 根據您的組織目標和Microsoft Entra ID 與應用程式之間的數據問題,為每個用戶選取適當的選項。 可能沒有單一選項涵蓋特定應用程式中的所有使用者。

選項 配置之前所需的更新
從應用程式刪除測試使用者 應用程式中的使用者
針對不再屬於組織的人員,從應用程式中刪除使用者 應用程式中的使用者
從應用程式刪除使用者,並使其從 Microsoft Entra 識別碼重新建立 應用程式中的使用者
更新應用程式中使用者的比對屬性 應用程式中的使用者
使用新的屬性更新應用程式中的使用者 應用程式中的使用者
當電子郵件位址不符合用戶主體名稱時,請變更比對規則或屬性 應用程式或Microsoft Entra 應用程式比對規則中的使用者
更新 Microsoft Entra ID 中使用者的比對屬性 Microsoft Entra 識別碼中的使用者
更新 Microsoft Entra Connect 或雲端同步的布建規則,以同步必要的使用者和屬性 Microsoft Entra Connect Sync 或 Microsoft Entra cloud Sync 會更新 Microsoft Entra ID 中的使用者資料。
使用新屬性更新 Microsoft Entra ID 中的使用者 Microsoft Entra 識別碼中的使用者
將比對規則變更為Microsoft Entra識別符中已填入的不同屬性 Microsoft Entra 應用程式比對規則
在 Windows Server AD 中為需要持續應用程式存取的使用者建立使用者 在 Windows Server AD 中的使用者,其 Microsoft Entra ID 將會被更新。
在 Microsoft Entra ID 中,為應用程式中需要持續存取權的使用者建立使用者帳戶 Microsoft Entra 識別碼中的使用者
在應用程式和Microsoft Entra標識符中維護個別且不相符的使用者 沒有

從應用程式刪除測試使用者

應用程式中可能會有從初始部署留下的測試使用者。 如果不再需要使用者,則可以從應用程式刪除這些使用者。

為已不屬於組織的人員,從應用程式刪除使用者

使用者可能不再與組織有關聯,而且不再需要應用程式存取權,但仍是應用程式數據源中的使用者。 如果應用程式管理員省略移除使用者,或未通知需要變更,就會發生這種情況。 如果不再需要使用者,則可以從應用程式刪除它。

從應用程式刪除使用者,並使其從 Microsoft Entra 識別碼重新建立

如果應用目前未廣泛使用,或不會維持每位使用者的狀態,那麼另一個選項是從應用中刪除使用者,以確保剩下的使用者皆符合條件。 然後,當使用者在 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 同步或雲端同步設定規則,以同步處理必要的使用者和屬性

在某些情況下,先前的身分識別管理系統已將 Windows Server AD 使用者填入適當的屬性,該屬性可與另一個應用程式作為比對屬性。 例如,如果先前的身分識別管理系統已連接到 HR 來源,那麼 AD 使用者會有一個由先前身分識別管理系統填入該使用者員工 ID 的屬性。 另一個範例是,先前的身分識別管理系統已將應用程式唯一的使用者標識碼寫入為 Windows Server AD 架構中的擴充屬性。 不過,如果未選擇這兩個屬性來同步至 Microsoft Entra ID,或使用者不在同步至 Microsoft Entra ID 的範圍內,則這樣的 Microsoft Entra ID 使用者社群表示可能不完整。

若要解決此問題,您必須變更您的 Microsoft Entra Connect 同步處理或Microsoft Entra 雲端同步設定,以確保應用程式中的所有適當使用者都位於布建至 Microsoft Entra ID 的範圍內,且這些使用者的同步處理屬性包含將用於比對用途的屬性。 如果您使用 Microsoft Entra Connect 同步處理,請參閱 Microsoft Entra Connect Sync:設定篩選Microsoft Entra Connect Sync:目錄延伸模組。 如果您使用 Microsoft Entra 雲端同步處理,請參閱 Microsoft Entra 雲端同步處理中的屬性對應雲端同步處理目錄擴充功能和自訂屬性對應

使用新屬性更新 Microsoft Entra 識別碼中的使用者

在某些情況下,應用程式可能會保留使用者目前未儲存在使用者Microsoft Entra ID 架構中的唯一標識符。 例如,如果您使用 SAP 雲端身分識別服務,您可能想要讓 SAP 使用者識別碼是比對屬性,或者如果您使用 Linux 系統,您可能想要讓 Linux 使用者識別碼成為比對屬性。 不過,這些屬性不是Microsoft Entra ID 用戶架構的一部分,因此可能不會出現在 Microsoft Entra ID 中的任何使用者上。

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

  1. 在 Microsoft Entra ID 中選取現有的未使用的擴充屬性,或使用新的屬性擴充 Microsoft Entra 用戶架構。
  2. 在 Microsoft Entra ID 中,為所有使用者的該屬性填入來自授權來源的數據,例如應用程式或 HR 系統。 如果使用者是從 Windows Server AD 同步處理,或從 HR 系統布建,您可能需要在該上游來源進行該變更。
  3. 更新 Microsoft Entra 應用程式佈建屬性對應組態 ,並在比對規則中包含此屬性。

將比對規則變更為Microsoft Entra ID中已經填寫的其他屬性

應用程式目錄中的應用程式預設比對規則仰賴通常存在於所有 Microsoft 客戶的所有 Microsoft Entra ID 使用者上的屬性,例如 userPrincipalName。 這些規則適用於一般用途的測試,或部署至目前尚無使用者的新應用程式。 不過,許多組織可能已經將Microsoft Entra ID 使用者填入與其組織相關的其他屬性,例如員工標識符。 如果有另一個屬性適合比對,請更新 Microsoft Entra 應用程式布建屬性對應組態 ,並在比對規則中包含此屬性。

設定從 HR 系統來源佈建至 Microsoft Entra ID 的輸入配置

在理想情況下,已將使用者布建至多個應用程式的組織,應該依賴衍生自 HR 系統等授權來源的使用者通用識別碼。 許多 HR 系統都有可運作的屬性以及標識碼,例如 employeeId 可以視為唯一的,因此沒有兩個人具有相同的員工標識碼。 如果您有一個人力資源來源,例如 Workday 或 SuccessFactors,則從該來源引入 employeeId 之類的屬性,通常可以制定出適合的比對規則。

若要使用屬性搭配從授權來源取得的值來進行比對,請執行下列步驟。

  1. 選取適當的Microsoft Entra ID 使用者架構屬性,或使用新的屬性擴充Microsoft Entra 用戶架構,其值會對應至應用程式中使用者的對等屬性。
  2. 請確保屬性也存在於人力資源來源中,適用於所有在 Microsoft Entra ID 和應用程式中有使用者的人員。
  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 識別碼所需的屬性,以便稍後將它們與應用程式中的現有使用者相符,以及 Microsoft Entra 識別碼所需的屬性,包括 userPrincipalNamemailNicknamedisplayNameuserPrincipalName 必須在目錄中的所有用戶中是唯一的。

使用 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 不是 mailNicknameuserPrincipalName,以提供該 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標識符中維護個別且不相符的使用者

應用程式資料來源中可能存在一個超級系統管理員使用者,不對應於 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 雲端身分識別服務,請遵循從步驟開始的 SAP 雲端身分識別服務布建教學 課程,以確保現有的 SAP 雲端身分識別服務使用者具有必要的相符屬性。 在本教學課程中,您會將使用者清單從 SAP Cloud Identity Services 導出至 CSV 檔案,然後使用 PowerShell 將這些使用者比對Microsoft Entra ID 中的使用者。

  • 如果您的應用程式使用LDAP目錄,請遵循從步驟開始的 LDAP目錄布建教學課程 ,從LDAP目錄收集現有的使用者。

  • 對於其他應用程式,包括那些具有 SQL 資料庫或在應用程式目錄中支援布建的應用程式,請遵循教學課程,從收集應用程式現有使用者的步驟開始以控管應用程式的現有使用者。

將使用者指派給應用程式角色並啟用配置

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

後續步驟