管理與 Microsoft Entra 識別碼中使用者不相符之應用程式中的對應和使用者

當您將現有的應用程式與 Microsoft Entra ID 整合時,若要布建或單一登錄 (SSO),您可能會判斷應用程式數據存放區中有使用者未對應至 Microsoft Entra ID 中的使用者,或不符合 Microsoft Entra ID 中的任何使用者。

Microsoft Entra 布建服務依賴可設定的比對規則來判斷 Microsoft Entra ID 中的使用者是否對應至應用程式中的使用者,並搜尋具有 Microsoft Entra ID 使用者相符屬性的使用者。 例如,假設比對規則是比較 Microsoft Entra ID 使用者 userPrincipalName 的屬性與應用程式的 userName 屬性。 將 值為 alice.smith@contoso.com 的 Microsoft Entra 識別碼userPrincipalName中的使用者指派給應用程式角色時,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 識別碼中的使用者不符的程式取決於應用程式與 Microsoft Entra 識別符的整合方式。

  • 如果您使用 SAP 雲端身分識別服務,請遵循 SAP 雲端身分識別服務布建教學課程 逐步解說,以確保現有的 SAP 雲端身分識別服務使用者具有必要的相符屬性。 在本教學課程中,您會將使用者清單從 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 識別碼中的使用者
更新 Microsoft Entra 連線 同步處理或雲端同步布建規則,以同步處理必要的使用者和屬性 Microsoft Entra 連線 Sync 或 Microsoft Entra cloud Sync,這會更新 Microsoft Entra 標識符中的使用者
使用新屬性更新 Microsoft Entra 識別碼中的使用者 Microsoft Entra 識別碼中的使用者
將比對規則變更為 Microsoft Entra ID 中已填入的不同屬性 Microsoft Entra 應用程式比對規則
在 Windows Server AD 中為需要持續應用程式存取的使用者建立使用者 Windows Server AD 中的使用者,這會更新使用者 Microsoft Entra ID
在 Microsoft Entra 識別碼中為需要持續存取應用程式的使用者建立使用者 Microsoft Entra 識別碼中的使用者
在應用程式和 Microsoft Entra ID 中維護個別且不相符的使用者

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

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

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

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

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

如果應用程式目前未使用,或未維護任何每個用戶狀態,則另一個選項是從應用程式刪除使用者,讓不再有任何不相符的使用者。 然後,當使用者在 Microsoft Entra ID 中要求或指派應用程式時,將會布建存取權。

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

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

例如,當 SAP 系統管理員使用其管理控制台在 SAP Cloud Identity Services 中建立使用者時,使用者可能沒有 userName 屬性。 不過,該屬性可能是用來比對 Microsoft Entra 識別碼中用戶的屬性。 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 連線 同步或雲端同步布建規則,以同步處理必要的使用者和屬性

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

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

使用新屬性更新 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 識別碼的輸入布建

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

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

  1. 選取適當的 Microsoft Entra ID 使用者架構屬性,或使用新的屬性擴充 Microsoft Entra 用戶架構,其值會對應至應用程式中使用者的對等屬性。
  2. 請確定屬性也會出現在 HR 來源中,供擁有 Microsoft Entra ID 和應用程式之使用者的所有人員使用。
  3. 設定從該 HR 來源到 Microsoft Entra 識別碼的輸入布建。
  4. 等候 Microsoft Entra ID 中的使用者以新的屬性更新。
  5. 更新 Microsoft Entra 應用程式佈建屬性對應組態,並在比對規則中包含此屬性。

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

如果應用程式有使用者未對應至授權 HR 來源中的人員,但未來將需要存取 Windows Server AD 型應用程式和 Microsoft Entra ID 整合的應用程式,而您的組織會使用 Microsoft Entra 連線 Sync 或 Microsoft Entra Cloud Sync 將使用者從 Windows Server AD 布建至 Microsoft Entra ID, 然後,您可以針對尚未存在的每個使用者,在 Windows Server AD 中建立使用者。

如果使用者不需要存取以 Windows Server AD 為基礎的應用程式,請在 Microsoft Entra ID 中建立使用者,如下一節所述。

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

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

  • CSV 檔案,如在 Microsoft Entra 系統管理中心大量建立使用者中所述
  • New-MgUser Cmdlet

請確定這些新使用者已填入 Microsoft Entra ID 所需的屬性,以便稍後將它們與應用程式中的現有使用者相符,以及 Microsoft Entra ID 所需的屬性,包括 userPrincipalNamemailNicknamedisplayName。 在 userPrincipalName 目錄中的所有使用者中,必須是唯一的。

使用 PowerShell 大量建立使用者

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

貴組織第一次針對此案例使用這些 Cmdlet 時,您必須具有全域 管理員 istrator 角色,才能在租使用者中使用 Microsoft Graph PowerShell。 後續的互動可以使用較低許可權的角色,例如User管理員 istrator。

  1. 如果您已經有PowerShell工作階段,您可以在其中識別不在 Microsoft Entra 識別碼的應用程式中的使用者,然後繼續進行下面的步驟 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 識別碼:

    $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 使用者主體名稱使用的值、數據行中的值包含 Microsoft Entra ID 郵件暱稱,而數據行中的AliasFull 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 ID 中維護個別且不相符的使用者

應用程式數據源中可能有超級系統管理員使用者,不會對應至 Microsoft Entra 識別碼中的任何特定人員。 如果您未為其建立 Microsoft Entra 使用者,這些使用者將無法從 Microsoft Entra 識別碼或 Microsoft Entra ID 控管 進行管理。 由於這些使用者將無法使用 Microsoft Entra ID 登入,因此,如果您要將應用程式設定為使用 Microsoft Entra ID 作為識別提供者,請確定這些使用者不在使用 Microsoft Entra ID 進行驗證的範圍之外。

重新匯出使用者

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

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

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

下一步