設定 Microsoft Entra ID 以將使用者布建到 LDAP 目錄

下列檔提供組態和教學課程資訊,示範如何將使用者從 Microsoft Entra ID 布建到 LDAP 目錄。

本文件說明您需要執行的步驟,以將使用者從 Microsoft Entra ID 自動布建和取消布建到 LDAP 目錄。 本文件說明如何將使用者布建到 AD LDS 做為範例 LDAP 目錄,但您可以將布建到下列各節所述的任何支援的 LDAP 目錄伺服器。 不支援透過此解決方案將使用者布建到 Active Directory 網域服務。

如需此服務執行方式、運作方式和常見問題的重要詳細數據,請參閱使用 Microsoft Entra ID 和內部部署應用程式佈建架構將使用者布建和取消布建至 SaaS 應用程式。 下列影片提供內部部署布建的概觀。

將使用者布建到LDAP目錄的必要條件

內部部署必要條件

  • 使用目錄伺服器來查詢使用者的應用程式。
  • Active Directory 網域服務 以外的目標目錄,用戶可以在其中建立、更新和刪除。 例如,Active Directory 輕量型服務(AD LDS)。 此目錄實例不應該是也用來將使用者布建到 Microsoft Entra 標識符的目錄,因為有這兩個案例可能會使用 Microsoft Entra 建立迴圈 連線。
  • 至少有 3 GB RAM 的電腦,用來裝載布建代理程式。 計算機應具有 Windows Server 2016 或更新版本的 Windows Server、目標目錄的連線能力,以及與 login.microsoftonline.com、 其他 Microsoft Online ServicesAzure 網域的輸出連線。 例如裝載於 Azure IaaS 或 Proxy 後方的 Windows Server 2016 虛擬機。
  • 必須安裝 .NET Framework 4.7.2。
  • 選用:雖然並非必要專案,但建議下載 適用於 Windows Server 的 Microsoft Edge,並使用它取代 Internet Explorer。

支援的LDAP目錄伺服器

連接器依賴各種技術來偵測和識別LDAP伺服器。 連接器會使用根 DSE、廠商名稱/版本,並檢查架構以尋找特定 LDAP 伺服器中已知存在的唯一對象和屬性。

  • OpenLDAP
  • Microsoft Active Directory 輕量型目錄服務
  • 389 目錄伺服器
  • Apache Directory 伺服器
  • IBM Tivoli DS
  • Isode 目錄
  • NetIQ eDirectory
  • Novell eDirectory
  • 開啟 DJ
  • 開啟 DS
  • Oracle (先前為 Sun ONE) Directory Server Enterprise Edition
  • RadiantOne Virtual Directory Server (VDS)

如需詳細資訊,請參閱一般LDAP連線or參考

雲端需求

  • 具有 Microsoft Entra ID P1 或 進階版 P2 的 Microsoft Entra 租使用者(或 EMS E3 或 E5)。

    使用此功能需要 Microsoft Entra ID P1 授權。 若要尋找適合您需求的授權,請參閱比較 Microsoft Entra ID 正式推出的功能

  • 混合式身分識別 管理員 istrator 角色,用於設定布建代理程式和應用程式 管理員 istrator 或 Cloud Application 管理員 istrator 角色,以在 Azure 入口網站 中設定布建。

  • 要布建至LDAP目錄的 Microsoft Entra 用戶必須已填入目錄伺服器架構所需的屬性,而且是每個使用者特有的屬性。 例如,如果目錄伺服器要求每個使用者擁有介於 10000 到 30000 之間的唯一數位作為其使用者識別碼,以支援 POSIX 工作負載,則您必須從使用者的現有屬性產生該數位,或擴充 Microsoft Entra 架構,並在 LDAP 型應用程式範圍內的使用者填入該屬性。 如需如何建立其他目錄延伸模組,請參閱 圖形擴充性

更多建議和限制

下列項目符號點是更多建議和限制。

  • 不建議使用相同的代理程式進行雲端同步處理和內部部署應用程式佈建。 Microsoft 建議使用個別的代理程式進行雲端同步處理,另一個用於內部部署應用程式佈建。
  • 針對AD LDS目前,使用者無法使用密碼布建。 因此,您必須停用AD LDS的密碼原則,或以停用狀態布建使用者。
  • 對於其他目錄伺服器,可以設定初始隨機密碼,但無法將 Microsoft Entra 使用者的密碼布建到目錄伺服器。
  • 不支援將使用者從 Microsoft Entra 識別符布建至 Active Directory 網域 Services。
  • 不支援將使用者從LDAP布建到 Microsoft Entra ID。
  • 不支援將群組和用戶成員資格布建到目錄伺服器。

選取執行配置檔

當您建立連接器組態以與目錄伺服器互動時,您會先設定連接器以讀取目錄的架構、將該架構對應至 Microsoft Entra ID 的架構,然後透過執行設定檔來設定連接器應持續使用的方法。 您設定的每個執行設定檔都會指定連接器如何產生LDAP要求,以從目錄伺服器匯入或匯出資料。 將連接器部署至現有的目錄伺服器之前,您必須與組織中的目錄伺服器操作員討論將會與其目錄伺服器一起執行的作業模式。

  • 設定之後,當布建服務啟動時,它會自動執行在完整匯入執行配置檔中設定的互動。 在此執行配置檔中,連接器會使用LDAP搜尋作業,從目錄中讀取使用者的所有記錄。 此執行配置檔是必要的,以便稍後,如果 Microsoft Entra ID 需要為使用者進行變更,Microsoft Entra ID 將會更新目錄中該使用者的現有物件,而不是為該使用者建立新的物件。

  • 每次在 Microsoft Entra 識別符中進行變更,例如將新使用者指派給應用程式或更新現有的使用者時,布建服務會在匯出執行配置檔中執行 LDAP 互動。 在匯出執行配置檔中,Microsoft Entra ID 會發出LDAP要求,以在目錄中新增、修改、移除或重新命名物件,以便讓目錄的內容與 Microsoft Entra ID 同步。

  • 如果您的目錄支援,您也可以選擇性地設定 Delta 匯入 執行設定檔。 在此執行配置檔中,Microsoft Entra ID 會在上次完整或差異匯入之後,在目錄中所做的變更中讀取,而不是由 Microsoft Entra ID 所做的變更。 此執行配置檔是選擇性的,因為目錄可能尚未設定為支援差異匯入。 例如,如果您的組織使用 OpenLDAP,則必須使用啟用存取記錄重疊功能來部署 OpenLDAP。

判斷 Microsoft Entra LDAP 連線 or 如何與目錄伺服器互動

將連接器部署至現有的目錄伺服器之前,您必須與組織中的目錄伺服器操作員討論如何與其目錄伺服器整合。 您將收集的資訊包括如何連線到目錄伺服器的網路資訊、連接器應該如何向目錄伺服器驗證自己、目錄伺服器已選取哪些架構來建立使用者模型、命名內容的基底辨別名稱和目錄階層規則、如何將目錄伺服器中的使用者與 Microsoft Entra ID 中的使用者產生關聯。 以及當使用者在 Microsoft Entra ID 中超出範圍時會發生什麼事。 部署此連接器可能需要變更目錄伺服器的設定,以及 Microsoft Entra 識別碼的組態變更。 針對在生產環境中整合 Microsoft Entra ID 與第三方目錄伺服器的部署,我們建議客戶與其目錄伺服器廠商合作,或部署合作夥伴以取得此整合的說明、指引和支援。 本文針對AD LDS和OpenLDAP使用下列兩個目錄的範例值。

組態設定 設定值的位置 範例值
目錄伺服器的主機名 設定精靈 連線 連線 APP3
目錄伺服器的埠號碼 設定精靈 連線ivity頁面 636.針對透過SSL或 TLS 的LDAP(LDAPS),請使用埠 636。 針對 Start TLS,請使用埠 389。
用來向目錄伺服器識別本身的連接器帳戶 組態精靈 連線 ivity 頁面 針對 AD LDS 和 CN=svcAccountLDAP,CN=ServiceAccounts,CN=App,DC=contoso,DC=lab OpenLDAP, cn=admin,dc=contoso,dc=lab
連接器向目錄伺服器驗證本身的密碼 設定精靈 連線ivity頁面
目錄伺服器中用戶的結構物件類別 組態精靈 物件類型 頁面 針對 AD LDS User 和 OpenLDAP inetOrgPerson
目錄伺服器中用戶的輔助物件類別 Azure 入口網站 布建頁面屬性對應 針對具有 POSIX 架構的 OpenLDAP, posixAccount 以及shadowAccount
在新使用者上填入的屬性 設定精靈 選取屬性頁面和 Azure 入口網站 建頁面屬性對應 針對 AD LDS msDS-UserAccountDisabled、、 displayNameuserPrincipalName和 ,適用於 OpenLDAP cngidNumber、、homeDirectoryuidsnuidNumbermailobjectClassuserPassword
目錄伺服器所需的命名階層 Azure 入口網站 布建頁面屬性對應 針對 AD LDS 和 DC=Contoso,DC=lab OpenLDAP,將新建立使用者的 DN 設定在正下方CN=CloudUsers,CN=App,DC=Contoso,DC=lab
屬性,可讓使用者跨 Microsoft Entra ID 和目錄伺服器相互關聯 Azure 入口網站 布建頁面屬性對應 針對AD LDS,未設定為此範例適用於初始空白目錄,而OpenLDAP則為 mail
當使用者在 Microsoft Entra ID 中超出範圍時取消布建行為 設定精靈 取消布建 頁面 從目錄伺服器刪除使用者

目錄伺服器的網路位址是主機名和 TCP 連接埠號碼,通常是埠 389 或 636。 除了目錄伺服器與相同 Windows Server 上的連接器共置,或是您使用的是網路層級安全性,否則從連接器到目錄伺服器的網路連線必須使用 SSL 或 TLS 來保護。 連接器支持連線到埠 389 上的目錄伺服器,並使用啟動 TLS 在工作階段內啟用 TLS。 連接器也支援在埠 636 上連線到 LDAPS - LDAP over TLS 的目錄伺服器。

您必須有連接器的已識別帳戶,才能向目錄伺服器中已設定的目錄伺服器進行驗證。 此帳戶通常會以辨別名稱來識別,且具有相關聯的密碼或客戶端憑證。 若要對連線目錄中的物件執行匯入和匯出作業,連接器帳戶必須在目錄的訪問控制模型中具有足夠的許可權。 連接器必須具有 可導出的寫入 許可權,以及 能夠匯入的讀取 許可權。 許可權設定是在目標目錄本身的管理體驗內執行。

目錄架構會指定物件類別和屬性,這些物件類別和屬性代表目錄中的實際實體。 連接器支援以結構物件類別表示的使用者,例如 inetOrgPerson,以及選擇性地額外的輔助物件類別。 為了讓連接器能夠將使用者布建到目錄伺服器,在 Azure 入口網站 設定期間,您將定義從 Microsoft Entra 架構到所有必要屬性的對應。 這包括結構物件類別的強制屬性、該結構物件類別的任何超級類別,以及任何輔助物件類別的強制屬性。 此外,您可能也會設定這些類別的一些選擇性屬性的對應。 例如,OpenLDAP 目錄伺服器可能需要物件,讓新用戶擁有類似下列範例的屬性。

dn: cn=bsimon,dc=Contoso,dc=lab
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: bsimon
gidNumber: 10000
homeDirectory: /home/bsimon
sn: simon
uid: bsimon
uidNumber: 10011
mail: bsimon@contoso.com
userPassword: initial-password

目錄伺服器所實作的目錄階層規則描述每個用戶的物件如何彼此相關,以及目錄中的現有物件。 在大部分的部署中,組織選擇在其目錄伺服器中有一個一般階層,其中每個使用者的每個物件都位於通用基底物件之下。 例如,如果目錄伺服器中命名內容的基底辨別名稱是 dc=contoso,dc=com ,則新使用者會有類似 cn=alice,dc=contoso,dc=com的辨別名稱。 不過,某些組織可能會有更複雜的目錄階層,在此情況下,您必須在指定連接器的辨別名稱對應時實作規則。 例如,目錄伺服器可能會預期使用者依部門位於組織單位,因此新使用者會有類似 cn=alice,ou=London,dc=contoso,dc=com的辨別名稱。 由於連接器不會為組織單位建立中繼物件,因此目錄伺服器規則階層預期的任何中繼物件都必須存在於目錄伺服器中。

接下來,您必須定義連接器應如何判斷目錄伺服器中是否有用戶對應至 Microsoft Entra 用戶的規則。 每個LDAP目錄都有目錄伺服器中每個物件唯一的辨別名稱,但是 Microsoft Entra ID 中的使用者通常不會有辨別名稱。 相反地,組織在其目錄伺服器架構中可能會有不同的屬性,例如 mailemployeeId,這些屬性也會出現在其 Microsoft Entra ID 中的使用者上。 然後,當連接器將新的使用者布建到目錄伺服器時,連接器可以搜尋該目錄中是否有使用者具有該屬性的特定值,而且只有在目錄伺服器中沒有使用者時,才會在目錄伺服器中建立新的使用者。

如果您的案例牽涉到在LDAP目錄中建立新使用者,而不只是更新或刪除現有的使用者,則您也必須判斷使用該目錄伺服器的應用程式如何處理驗證。 建議的方法是讓應用程式使用 SAML、OAuth 或 Open 連線 ID 等同盟或 SSO 通訊協定來向 Microsoft Entra ID 進行驗證,並只依賴目錄伺服器進行屬性。 傳統上,應用程式可以使用LDAP目錄來檢查密碼來驗證使用者,但多重要素驗證或使用者已經驗證時,無法使用此使用案例。 有些應用程式可以從目錄中查詢使用者的 SSH 公鑰或憑證,這可能適合使用者已持有這些表單的認證。 不過,如果您的應用程式依賴目錄伺服器不支援新式驗證通訊協定或更強的認證,則您必須在目錄中建立新用戶時設定應用程式特定的密碼,因為 Microsoft Entra ID 不支援布建使用者的 Microsoft Entra 密碼。

最後,您必須同意取消布建行為。 設定連接器時,且 Microsoft Entra ID 已建立 Microsoft Entra ID 中使用者與目錄中使用者之間的連結,不論是針對已經在目錄中的使用者或新使用者,則 Microsoft Entra ID 可以將屬性變更從 Microsoft Entra 使用者布建到目錄中。 如果在 Microsoft Entra ID 中刪除指派給應用程式的使用者,則 Microsoft Entra ID 會將刪除作業傳送至目錄伺服器。 當使用者超出能夠使用應用程式的範圍時,您可能也想要讓 Microsoft Entra ID 更新目錄伺服器中的物件。 此行為取決於將使用目錄伺服器的應用程式,因為許多目錄,例如 OpenLDAP,可能沒有預設的方式來指出使用者帳戶已停用。

準備LDAP目錄

如果您還沒有目錄伺服器,而且想要試用這項功能,則 準備Active Directory 輕量型目錄服務以從 Microsoft Entra ID 布建會示範如何建立測試 AD LDS 環境。 如果您已經部署了另一部目錄伺服器,您可以略過該文章,並繼續安裝及設定 ECMA 連接器主機。

安裝和設定 Microsoft Entra 連線 布建代理程式

如果您已經下載布建代理程式,並將其設定為另一個內部部署應用程式,請繼續閱讀下一節。

  1. 登入 Azure 入口網站。
  2. 移至 [企業應用程式 ],然後選取 [ 新增應用程式]。
  3. 搜尋 內部部署 ECMA 應用程式 應用程式、提供應用程式名稱,然後選取 [建立 ] 將它新增至您的租使用者。
  4. 從功能表中,瀏覽至應用程式的 [ 布建 ] 頁面。
  5. 選取開始使用
  6. 在 [ 布建] 頁面上,將模式變更為 [自動]。

選取 [自動] 的螢幕快照。

  1. [內部部署 連線 ivity] 底下,選取 [下載並安裝],然後選取 [接受條款及下載]。

代理程式的下載位置螢幕快照。

  1. 離開入口網站並開啟布建代理程式安裝程式、同意服務條款,然後選取 [ 安裝]。
  2. 等候 Microsoft Entra 布建代理程式設定精靈,然後選取 [ 下一步]。
  3. 在 [ 選取擴充功能 ] 步驟中,選取 [內部部署應用程式布建 ],然後選取 [ 下一步]。
  4. 布建代理程式會使用操作系統的網頁瀏覽器來顯示彈出視窗,讓您向 Microsoft Entra ID 進行驗證,並可能也會顯示組織的識別提供者。 如果您使用 Internet Explorer 作為 Windows Server 上的瀏覽器,您可能需要將 Microsoft 網站新增至瀏覽器的信任網站清單,以允許 JavaScript 正確執行。
  5. 當系統提示您授權時,請提供 Microsoft Entra 系統管理員的認證。 用戶必須具備混合式身分識別 管理員 istrator 或 Global 管理員 istrator 角色。
  6. 選取 [ 確認 ] 以確認設定。 安裝成功之後,您可以選取 [ 結束],並關閉 [布建代理程式套件安裝程式]。

設定內部部署ECMA應用程式

  1. 回到入口網站的 [內部部署 連線 ivity] 區段上,選取您部署的代理程式,然後選取 [指派代理程式]。

    顯示如何選取和指派和代理程序的螢幕快照。

  2. 當您使用設定精靈完成下一個步驟的設定時,請保持此瀏覽器窗口開啟。

設定 Microsoft Entra ECMA 連線 or 主機憑證

  1. 在安裝布建代理程式的 Windows Server 上,以滑鼠右鍵按兩下 [開始] 選單中的 [Microsoft ECMA2Host 設定精靈],然後以系統管理員身分執行。 精靈必須以 Windows 系統管理員身分執行,才能建立必要的 Windows 事件記錄檔。
  2. ECMA 連線 or 主機組態啟動之後,如果這是您第一次執行精靈,則會要求您建立憑證。 保留預設埠 8585 ,然後選取 [產生憑證 ] 以產生憑證。 自動產生的憑證將會自我簽署為受信任根目錄的一部分。 SAN 符合主機名。 顯示設定的螢幕快照。
  3. 選取 [儲存]

注意

如果您選擇產生新的憑證,請記錄憑證到期日,以確保您排程返回設定精靈,並在憑證到期之前重新產生憑證。

設定一般LDAP連接器

視您選取的選項而定,某些精靈畫面可能無法使用,而且資訊可能稍有不同。 針對此範例組態的目的,會針對AD LDS顯示使用 User 對象類別布建使用者,以及OpenLDAP的 inetOrgPerson 物件類別。 使用下列信息來引導您在設定中。

  1. 產生將用來向連接器驗證 Microsoft Entra 識別碼的秘密令牌。 每個應用程式至少應為 12 個字元且是唯一的。 如果您還沒有秘密產生器,您可以使用 PowerShell 命令,例如下列命令來產生範例隨機字串。

    -join (((48..90) + (96..122)) * 16 | Get-Random -Count 16 | % {[char]$_})
    
  2. 如果您尚未這麼做,請從 [開始] 功能表啟動 [Microsoft ECMA2Host 設定精靈]。

  3. 選取新增連接器顯示選擇 [新增] 連線 or 的螢幕快照。

  4. 在 [ 屬性] 頁面上,填入方塊中指定於影像後面的數據表中指定的值,然後選取 [ 下一步]。 顯示輸入屬性的螢幕快照。

    屬性
    名稱 您為連接器選擇的名稱,在環境中的所有連接器中都應該是唯一的。 例如: LDAP
    自動同步定時器 (分鐘) 120
    秘密令牌 在這裡輸入您的秘密令牌。 至少應為 12 個字元。
    擴充功能 DLL 針對一般LDAP連接器,選取 [Microsoft.IAM.連線或。GenericLdap.dll。
  5. [連線 ivity] 頁面上,您將設定 ECMA 連線 or Host 與目錄伺服器通訊的方式,並設定一些組態選項。 在方塊中填入影像後面的數據表中指定的值,然後選取 [ 下一步]。 當您選取 [下一步] 時,連接器會查詢目錄伺服器是否有其設定。 顯示 連線 性頁面的螢幕快照。

    屬性 描述
    Host LDAP 伺服器所在的主機名。 此範例使用 APP3 作為範例主機名。
    連接埠 TCP 通訊埠號碼。 如果目錄伺服器已針對LDAP over SSL 進行設定,請使用埠 636。 針對 Start TLS,或如果您使用網路層級安全性,請使用埠 389。
    連接逾時 180
    繫結 這個屬性會指定連接器如何向目錄伺服器進行驗證。 透過 Basic 設定,或設定 或 SSLTLS 設定,且未設定任何用戶端憑證,連接器會傳送LDAP簡單系結,以辨別名稱和密碼進行驗證。 SSL使用 或 TLS 設定和指定的用戶端憑證,連接器會傳送LDAP SASL EXTERNAL 系結以使用客戶端憑證進行驗證。
    使用者名稱 ECMA 連線 or 如何向目錄伺服器驗證自己。 在此AD LDS範例中,範例用戶名稱是 CN=svcAccount,CN=ServiceAccounts,CN=App,DC=contoso,DC=lab OpenLDAP, cn=admin,dc=contoso,dc=lab
    密碼 ECMA 連線 or 將自行向目錄伺服器驗證的用戶密碼。
    領域/領域 只有在您選取 Kerberos 為 [系結] 選項時,才需要此設定,才能提供使用者的領域/網域。
    憑證 只有在您選取 SSLTLS 做為 [系結] 選項時,才會使用本節中的設定。
    屬性別名 屬性別名文本框會用於使用 RFC4522 語法在架構中定義的屬性。 在架構偵測期間無法偵測這些屬性,連接器需要協助識別這些屬性。 例如,如果目錄伺服器未發佈 userCertificate;binary 且您想要布建該屬性,則必須在 [屬性別名] 方塊中輸入下列字串,才能正確地將userCertificate屬性識別為二進位屬性: userCertificate;binary。 如果您不需要架構中的任何特殊屬性,您可以將此保留空白。
    包含作業屬性 Include operational attributes in schema選取複選框以包含目錄伺服器所建立的屬性。 這些包括屬性,例如物件建立的時間和上次更新時間。
    包含可延伸屬性 Include extensible attributes in schema如果目錄伺服器中使用可延伸物件(RFC4512/4.3),請選取複選框。 啟用此選項可讓所有物件上使用每個屬性。 選取此選項會使架構變得非常大,因此,除非已連線的目錄使用這項功能,否則建議保留未選取的選項。
    允許手動錨點選取 請勿核取。

    注意

    如果您在嘗試連線時遇到問題,且無法繼續進行 [ 全域 ] 頁面,請確定已啟用 AD LDS 或其他目錄伺服器中的服務帳戶。

  6. 在 [ 全域 ] 頁面上,您可以視需要設定差異變更記錄的辨別名稱,以及其他LDAP功能。 頁面會預先填入LDAP伺服器提供的資訊。 檢閱顯示的值,然後選取 [ 下一步]。

    屬性 說明
    支援的SASL機制 頂端區段會顯示伺服器本身提供的資訊,包括SASL機制清單。
    伺服器證書詳細數據 如果 SSL 指定 或 TLS ,精靈將會顯示目錄伺服器所傳回的憑證。 確認簽發者、主旨和指紋適用於正確的目錄伺服器。
    找到必要功能 連接器也會驗證根 DSE 中是否存在強制控制件。 如果未列出這些控制件,則會顯示警告。 有些LDAP目錄不會列出根 DSE 中的所有功能,而且即使有警告,連接器仍可能沒有問題運作。
    支援的控制件 支援的控件複選框可控制特定作業的行為
    差異匯入 變更記錄 DN 是差異變更記錄所使用的命名內容,例如 cn=changelog。 必須指定這個值,才能執行差異匯入。
    密碼屬性 如果目錄伺服器支援不同的密碼屬性或密碼哈希,您可以指定密碼變更的目的地。
    數據分割名稱 在其他分割區清單中,可以新增未自動偵測到的其他命名空間。 例如,如果數部伺服器組成邏輯叢集,應該同時匯入,則可以使用此設定。 就像 Active Directory 在一個樹系中可以有多個網域,但所有網域共用一個架構,同樣可以藉由在此方塊中輸入其他命名空間來模擬。 每個命名空間都可以從不同的伺服器匯入,並在 [ 設定分割區和階層 ] 頁面上進一步設定。
  7. 在 [ 數據分割 ] 頁面上,保留預設值,然後選取 [ 下一步]。

  8. 在 [ 執行配置檔] 頁面上,確定已選取 [ 匯出 ] 複選框和 [ 完整匯入 ] 複選框。 然後選取下一步顯示 [執行設定檔] 頁面的螢幕快照。

    屬性 說明
    Export 執行會將數據匯出至 LDAP 目錄伺服器的設定檔。 此執行配置檔是必要的。
    完整匯入 執行配置檔,該配置檔會從稍早指定的LDAP來源匯入所有數據。 此執行配置檔是必要的。
    差異匯入 執行配置檔,此配置檔只會匯入自上次完整或差異匯入后從LDAP進行的變更。 只有在您確認目錄伺服器符合必要需求時,才啟用此執行配置檔。 如需詳細資訊,請參閱一般LDAP連線or參考
  9. 在 [導出] 頁面上,保留預設值不變,然後按 [下一步]。

  10. 在 [ 完整匯 入] 頁面上,保留預設值不變,然後按 [下一步]。

  11. 在 DeltaImport 頁面上,如果存在,請將預設值保留不變,然後按 [下一步]。

  12. 在 [ 物件類型 ] 頁面上,填入方塊,然後選取 [ 下一步]。

    屬性 說明
    目標物件 此值是LDAP目錄伺服器中用戶的結構物件類別。 例如, inetOrgPerson 針對 OpenLDAP 或 User AD LDS。 請勿在此欄位中指定輔助物件類別。 如果目錄伺服器需要輔助物件類別,則會使用 Azure 入口網站 中的屬性對應進行設定。
    錨點 此屬性的值對於目標目錄中的每個物件而言都應該是唯一的。 Microsoft Entra 布建服務會在初始循環之後使用此屬性來查詢 ECMA 連接器主機。 針對AD LDS,請使用 ObjectGUID和其他目錄伺服器,請參閱下表。 請注意,辨別名稱可能會選取為 -dn-。 多重值屬性,例如 uid OpenLDAP 架構中的 屬性,不能當做錨點使用。
    查詢屬性 此屬性應該與 Anchor 相同,例如 objectGUID AD LDS 是目錄伺服器,或 _distinguishedName OpenLDAP。
    DN 目標物件的 distinguishedName。 保留 -dn-
    自動產生 取消選取

    下表列出所使用的 LDAP 伺服器和錨點:

    Directory 錨點
    Microsoft AD LDS 和 AD GC objectGUID。 您必須使用代理程式 1.1.846.0 版或更新 ObjectGUID 版本,才能當做錨點使用。
    389 目錄伺服器 Dn
    Apache 目錄 Dn
    IBM Tivoli DS Dn
    Isode 目錄 Dn
    Novell/NetIQ eDirectory GUID
    開啟 DJ/DS Dn
    開啟LDAP Dn
    Oracle ODSEE Dn
    RadiantOne VDS Dn
    Sun One Directory Server Dn
  13. ECMA 主機會探索目標目錄所支援的屬性。 您可以選擇要公開給 Microsoft Entra 識別碼的其中一個屬性。 然後,您可以在布建的 Azure 入口網站 中設定這些屬性。 在 [ 選取屬性] 頁面上,新增下拉式清單中的所有屬性,一次一個,作為必要屬性或您想要從 Microsoft Entra ID 布建的必要屬性。 顯示 [選取屬性] 頁面的螢幕快照。
    [屬性] 下拉式清單會顯示在目標目錄中探索到的任何屬性,且未在先前使用組態精靈的 [選取屬性] 頁面上選擇。

    請確定 Treat as single value 已取消核取屬性的 objectClass 複選框,如果 userPassword 已設定,則為 userPassword 無法選取或檢查該屬性。

    如果您使用 OpenLDAP 搭配 inetOrgPerson 架構,請設定下列屬性的可見性。

    屬性 將視為單一值
    cn Y
    郵件 Y
    objectClass
    sn Y
    userPassword Y

    如果您使用 OpenLDAP 搭配 POSIX 架構,請設定下列屬性的可見性。

    屬性 將視為單一值
    _distinguishedName
    -Dn-
    export_password
    cn Y
    gidNumber
    homeDirectory
    郵件 Y
    objectClass
    sn Y
    uid Y
    uidNumber
    userPassword Y

    新增所有相關屬性之後,請選取 [ 下一步]。

  14. 在 [ 取消布建 ] 頁面上,您可以指定當使用者離開應用程式範圍時,是否要讓 Microsoft Entra ID 從目錄中移除使用者。 如果是,請在 [停用流程] 底下選取 [刪除],然後在 [刪除流程] 底下,選取 [刪除]。 如果 Set attribute value 已選擇,在上一個頁面上選取的屬性將無法在取消布建頁面上選取。

注意

如果您使用 Set 屬性值,請注意只允許布林值

  1. 選取 [完成]。

確定 ECMA2Host 服務正在執行中,而且可以從目錄伺服器讀取

請遵循下列步驟來確認連接器主機已啟動,並且已從目錄伺服器讀取任何現有的使用者到連接器主機。

  1. 在執行 Microsoft Entra ECMA 連線 or Host 的伺服器上,選取 [啟動]。
  2. 視需要選取 [ 執行 ],然後在方塊中輸入 services.msc
  3. 在 [ 服務 ] 清單中,確定 Microsoft ECMA2Host 存在且正在執行。 如果未執行,請選取 [ 啟動]。 顯示服務正在執行的螢幕快照。
  4. 如果您最近已啟動服務,並在目錄伺服器中有許多用戶物件,請等候數分鐘,讓連接器與目錄伺服器建立連線。
  5. 在執行 Microsoft Entra ECMA 連線 or Host 的伺服器上,啟動 PowerShell。
  6. 變更為已安裝 ECMA 主機的資料夾,例如 C:\Program Files\Microsoft ECMA2Host
  7. 變更為子目錄 Troubleshooting
  8. 執行該目錄中的腳本 TestECMA2HostConnection.ps1 ,如下列範例所示,並提供作為連接器名稱和 ObjectTypePath 值的 cache自變數。 如果您的連接器主機未接聽 TCP 連接埠 8585,則您可能也需要提供 -Port 自變數。 出現提示時,輸入為該連接器設定的秘密令牌。
    PS C:\Program Files\Microsoft ECMA2Host\Troubleshooting> $cout = .\TestECMA2HostConnection.ps1 -ConnectorName LDAP -ObjectTypePath cache; $cout.length -gt 9
    Supply values for the following parameters:
    SecretToken: ************
    
  9. 如果文稿顯示錯誤或警告訊息,請檢查服務是否正在執行,且連接器名稱和秘密令牌符合您在組態精靈中設定的值。
  10. 如果文稿顯示輸出 False,則連接器尚未看到現有使用者來源目錄伺服器中的任何專案。 如果這是新的目錄伺服器安裝,則此行為是預期的,您可以在下一節繼續進行。
  11. 不過,如果目錄伺服器已經包含一或多個使用者,但顯示 False腳本,則此狀態表示連接器無法從目錄伺服器讀取。 如果您嘗試布建,則 Microsoft Entra ID 可能無法正確地比對該來源目錄中的使用者與 Microsoft Entra ID 中的使用者。 等候數分鐘,連接器主機完成從現有目錄伺服器讀取對象,然後重新執行腳本。 如果輸出繼續 False為 ,請檢查連接器的組態,以及目錄伺服器中的許可權允許連接器讀取現有的使用者。

測試從 Microsoft Entra 識別碼到連接器主機的連線

  1. 返回您在入口網站中設定應用程式布建的網頁瀏覽器視窗。

    注意

    如果視窗逾時,您必須重新選取代理程式。

    1. 登入 Azure 入口網站。
    2. 移至企業應用程式和內部部署 ECMA 應用程式應用程式
    3. 按兩下 [布 ]。
    4. 如果 [開始使用] 出現,請將模式變更為 [自動],請在 [內部部署 連線 ivity] 區段中,選取您剛才部署的代理程式,然後選取 [指派代理程式],然後等候 10 分鐘。 否則,請移至 [ 編輯布建]。
  2. [管理員 認證] 區段底下,輸入下列 URL。 將 connectorName 部份取代為 ECMA 主機上的連接器名稱,例如 LDAP。 如果您從 ECMA 主機的證書頒發機構單位提供憑證,請將 取代 localhost 為安裝 ECMA 主機之伺服器的主機名。

    屬性
    租使用者 URL https://localhost:8585/ecma2host_connectorName/scim
  3. 輸入您在建立連接器時定義的秘密令牌值。

    注意

    如果您剛將代理程式指派給應用程式,請等候 10 分鐘才能完成註冊。 在註冊完成之前,連線測試將無法運作。 藉由重新啟動伺服器上的布建代理程式,強制代理程序註冊完成,可以加速註冊程式。 移至您的伺服器,在 Windows 搜尋列中搜尋服務、識別 Microsoft Entra 連線 布建代理程式服務、以滑鼠右鍵按兩下服務,然後重新啟動。

  4. 選取 [測試 連線,然後等候一分鐘。

  5. 線上測試成功並指出提供的認證已獲授權啟用布建之後,請選取 [ 儲存]。
    顯示測試代理程式的螢幕快照。

擴充 Microsoft Entra 架構 (選擇性)

如果您的目錄伺服器需要不屬於用戶預設 Microsoft Entra 架構一部分的其他屬性,則當您布建時,您可以將 設定為提供常數中這些屬性的值、從從其他 Microsoft Entra 屬性轉換的表達式,或擴充 Microsoft Entra 架構。

如果目錄伺服器要求使用者具有屬性,例如 uidNumber OpenLDAP POSIX 架構,而且該屬性還不是使用者的 Microsoft Entra 架構的一部分,而且每個使用者都必須是唯一的,則您必須透過 表達式從使用者的其他屬性產生該屬性,或使用 目錄延伸模組功能 將該屬性新增為延伸模組。

如果您的使用者源自 Active Directory 網域服務,且在該目錄中具有 屬性,您可以使用 Microsoft Entra 連線 或 Microsoft Entra 連線 雲端同步,來設定屬性應該從 Active Directory 網域服務至 Microsoft Entra ID,使其可供布建至其他系統。

如果您的使用者源自 Microsoft Entra ID,則針對您必須儲存在使用者上的每個新屬性,您必須 定義目錄延伸模組。 然後, 更新計劃布建的 Microsoft Entra 使用者 ,為每位使用者提供這些屬性的值。

設定屬性對應

在本節中,您將設定 Microsoft Entra 使用者屬性與先前在 ECMA 主機設定精靈中選取的屬性之間的對應。 稍後當連接器在目錄伺服器中建立物件時,Microsoft Entra 使用者的屬性接著會透過連接器傳送至目錄伺服器,成為該新物件的一部分。

  1. 在 Microsoft Entra 系統管理中心的 [企業應用程式] 下,選取 [內部部署 ECMA 應用程式] 應用程式,然後選取 [布建] 頁面。

  2. 選取 [ 編輯布建]。

  3. 展開 [對應] ,然後選取 [ 布建 Microsoft Entra 使用者]。 如果這是您第一次設定此應用程式的屬性對應,則佔位元元只會有一個對應存在。

  4. 若要確認目錄伺服器的架構可在 Microsoft Entra ID 中使用,請選取 [顯示進階選項 ] 複選框,然後選取 [編輯 ScimOnPremises 的屬性清單]。 確定已列出組態精靈中選取的所有屬性。 如果沒有,請等候數分鐘讓架構重新整理,然後在導覽列中選取 [屬性對應 ],然後再次選取 [編輯 ScimOnPremises 的屬性清單] 以重載頁面。 一旦您看到列出的屬性,然後從此頁面取消以返回對應清單。

  5. 目錄中的每個用戶都必須有唯一的辨別名稱。 您可以使用屬性對應來指定連接器應該如何建構辨別名稱。 選取 [ 新增對應]。 使用下列範例中的值來建立對應,變更表達式中的辨別名稱,以符合目標目錄中的組織單位或其他容器。

    • 對應類型:expression
    • 在 AD LDS 中布建時,表達式: Join("", "CN=", Word([userPrincipalName], 1, "@"), ",CN=CloudUsers,CN=App,DC=Contoso,DC=lab")
    • 表達式,如果在 OpenLDAP 中布建: Join("", "CN=", Word([userPrincipalName], 1, "@"), ",DC=Contoso,DC=lab")
    • 目標屬性: urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:-dn-
    • 套用此對應:僅在物件建立期間
  6. 如果目錄伺服器需要多個結構化物件類別值或輔助物件類別值,才能在 屬性中 objectClass 提供,則將對應新增至該屬性。 針對將 布建至 AD LDS 的這個範例,不需要對應 objectClass ,但可能需要其他目錄伺服器或其他架構。 若要新增的 objectClass對應,請選取 [新增對應]。 使用下列範例中的值來建立對應,將表達式中的物件類別名稱變更為符合目標目錄架構的名稱。

    • 對應類型:expression
    • 表達式,如果布建 inetOrgPerson 架構: Split("inetOrgPerson",",")
    • 運算式,如果布建 POSIX 架構: Split("inetOrgPerson,posixAccount,shadowAccount",",")
    • 目標屬性: urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:objectClass
    • 套用此對應:僅在物件建立期間
  7. 如果您要布建到AD LDS,而且有從 userPrincipalName 對應到 PLACEHOLDER 的對應,請按兩下該對應並加以編輯。 使用下列值來更新對應。

    • 對應類型:直接
    • 來源屬性: userPrincipalName
    • 目標屬性: urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:userPrincipalName
    • 比對優先順序:1
    • 套用此對應:僅在物件建立期間
  8. 如果您要布建至 AD LDS,請新增 isSoftDeleted 的對應。 選取 [ 新增對應]。 使用下列值來建立對應。

    • 對應類型:直接
    • 來源屬性: isSoftDeleted
    • 目標屬性: urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:msDS-UserAccountDisabled
  9. 針對目錄伺服器下表中的每個對應,選取 [新增對應],然後指定來源和目標屬性。 如果您要佈建至現有使用者的現有目錄,則必須編輯屬性的對應,以針對該屬性使用此屬性來設定 Match 物件。 在這裡深入瞭解屬性對應

    針對 AD LDS:

    對應類型 來源屬性 目標屬性
    直接 displayName urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:displayName

    針對 OpenLDAP:

    對應類型 來源屬性 目標屬性
    直接 displayName urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:cn
    直接 surname urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:sn
    直接 userPrincipalName urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:mail

    針對具有 POSIX 架構的 OpenLDAP,您也需要提供gidNumberhomeDirectoryuiduidNumber 屬性。 每個使用者都需要唯 uid 一且唯 uidNumber一的 。 通常是 homeDirectory 由衍生自使用者userID的表示式所設定。 例如,如果使用者 uid 的 是由衍生自其用戶主體名稱的表達式所產生,則該使用者主目錄的值可能會由類似的表達式產生,其用戶主體名稱也衍生自其用戶主體名稱。 視您的使用案例而定,您可能想要讓所有使用者都位於相同的群組中,因此會從常數指派 gidNumber

    對應類型 來源屬性 目標屬性
    運算式 ToLower(Word([userPrincipalName], 1, "@"), ) urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:uid
    直接 (目錄特有的屬性) urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:uidNumber
    運算式 Join("/", "/home", ToLower(Word([userPrincipalName], 1, "@"), )) urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:homeDirectory
    持續性 10000 urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:gidNumber
  10. 如果布建到 AD LDS 以外的目錄,請新增對應以 urn:ietf:params:scim:schemas:extension:ECMA2Host:2.0:User:userPassword 設定使用者的初始隨機密碼。 針對 AD LDS,沒有 userPassword對應。

  11. 選取 [儲存]。

確定使用者已佈建至應用程式,在 Microsoft Entra ID 中具有必要的屬性

如果LDAP目錄中有現有的用戶帳戶,則必須確定 Microsoft Entra 使用者表示法具有比對所需的屬性。

如果您打算在LDAP目錄中建立新使用者,則必須確定這些使用者的 Microsoft Entra 表示法具有目標目錄的用戶架構所需的來源屬性。

您可以使用 Microsoft Graph PowerShell Cmdlet ,自動檢查使用者是否有必要的屬性。

例如,假設您的佈建需要使用者有三個屬性 DisplayNamesurnameextension_656b1c479a814b1789844e76b2f459c3_MyNewProperty。 您可以使用 Get-MgUser Cmdlet 來擷取每個使用者,並檢查所需的屬性是否存在。 請注意,Graph v1.0 Get-MgUser Cmdlet 預設不會傳回任何使用者的目錄擴充屬性,除非要求中指定屬性做為其中一個要傳回的屬性。

$userPrincipalNames = (
 "alice@contoso.com",
 "bob@contoso.com",
 "carol@contoso.com" )

$requiredBaseAttributes = ("DisplayName","surname")
$requiredExtensionAttributes = ("extension_656b1c479a814b1789844e76b2f459c3_MyNewProperty")

$select = "id"
foreach ($a in $requiredExtensionAttributes) { $select += ","; $select += $a;}
foreach ($a in $requiredBaseAttributes) { $select += ","; $select += $a;}

foreach ($un in $userPrincipalNames) {
   $nu = Get-MgUser -UserId $un -Property $select -ErrorAction Stop
   foreach ($a in $requiredBaseAttributes) { if ($nu.$a -eq $null) { write-output "$un missing $a"} }
   foreach ($a in $requiredExtensionAttributes) { if ($nu.AdditionalProperties.ContainsKey($a) -eq $false) { write-output "$un missing $a" } }
}

從LDAP目錄收集現有的使用者

許多LDAP目錄,例如Active Directory,包含輸出使用者清單的命令。

  1. 識別該目錄中哪些用戶屬於應用程式用戶的範圍。 這個選擇將取決於應用程式的組態。 對於某些應用程式,存在於LDAP目錄中的任何使用者都是有效的使用者。 其他應用程式可能要求使用者具有特定屬性,或是該目錄中群組的成員。

  2. 執行命令,從您的LDAP目錄擷取該使用者子集。 請確定輸出包含將用於與 Microsoft Entra ID 比對的用戶屬性。 這些屬性的範例包括員工標識碼、帳戶名稱和電子郵件位址。

    例如,在 Windows 上使用 AD LDS csvde 程式的此命令會在目前檔案系統目錄中產生 CSV 檔案,並具有 userPrincipalName 目錄中每個人的 屬性:

    $out_filename = ".\users.csv"
    csvde -f $out_filename -l userPrincipalName,cn -r "(objectclass=person)"
    
  3. 如有需要,請將包含使用者清單的 CSV 檔案傳送至 已安裝 Microsoft Graph PowerShell Cmdlet 的系統

  4. 既然您有從應用程式取得的所有使用者清單,您將會比對來自應用程式資料存放區的使用者與 Microsoft Entra ID 中的使用者。 繼續之前,請先檢閱來源和目標系統中相符使用者的相關信息

在 Microsoft Entra ID 中擷取使用者的標識碼

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

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

  • 如果您預期要建立新的使用者,則使用者 管理員 istrator。
  • 如果您只是管理應用程式角色指派,應用程式 管理員 istrator 或 Identity Governance 管理員 istrator
  1. 開啟 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,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
    
  4. 如果這是您第一次使用此命令,您可能需要同意允許 Microsoft Graph 命令行工具擁有這些許可權。

  5. 將從應用程式資料存放區取得的使用者清單讀取到 PowerShell 工作階段。 如果使用者在 CSV 檔案中,您可以使用 PowerShell Cmdlet Import-Csv ,並提供上一節中檔案的名稱做為自變數。

    例如,如果從 SAP Cloud Identity Services 取得的檔案名為 Users-exported-from-sap.csv 且位於目前目錄中,請輸入此命令。

    $filename = ".\Users-exported-from-sap.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    

    如需另一個範例,如果您使用資料庫或目錄,如果檔案名為 users.csv 且位於目前目錄中,請輸入下列命令:

    $filename = ".\users.csv"
    $dbusers = Import-Csv -Path $filename -Encoding UTF8
    
  6. 選擇與 Microsoft Entra ID 中使用者屬性相符之users.csv檔案的數據行。

    如果您使用 SAP 雲端識別服務,則預設對應是具有 Microsoft Entra ID 屬性的 SAP SCIM 屬性userNameuserPrincipalName

    $db_match_column_name = "userName"
    $azuread_match_attr_name = "userPrincipalName"
    

    針對另一個範例,如果您使用資料庫或目錄,則資料庫中的使用者,其中名為 EMail 的數據行值與 Microsoft Entra 屬性 userPrincipalName中的值相同:

    $db_match_column_name = "EMail"
    $azuread_match_attr_name = "userPrincipalName"
    
  7. 在 Microsoft Entra ID 中擷取這些使用者的標識碼。

    下列 PowerShell 腳本會使用 $dbusers稍早指定的、 $db_match_column_name$azuread_match_attr_name 值。 它會查詢 Microsoft Entra 識別碼,以找出具有來源檔案中每個記錄相符值的屬性的使用者。 如果檔案中有許多使用者從來源 SAP Cloud Identity Services、資料庫或目錄取得,此腳本可能需要幾分鐘的時間才能完成。 如果您的 Microsoft Entra ID 中沒有具有 值的屬性,而且需要使用 contains 或其他篩選表達式,則必須自定義下列步驟 11 中的 屬性,才能使用不同的篩選表達式。

    $dbu_not_queried_list = @()
    $dbu_not_matched_list = @()
    $dbu_match_ambiguous_list = @()
    $dbu_query_failed_list = @()
    $azuread_match_id_list = @()
    $azuread_not_enabled_list = @()
    $dbu_values = @()
    $dbu_duplicate_list = @()
    
    foreach ($dbu in $dbusers) { 
       if ($null -ne $dbu.$db_match_column_name -and $dbu.$db_match_column_name.Length -gt 0) { 
          $val = $dbu.$db_match_column_name
          $escval = $val -replace "'","''"
          if ($dbu_values -contains $escval) { $dbu_duplicate_list += $dbu; continue } else { $dbu_values += $escval }
          $filter = $azuread_match_attr_name + " eq '" + $escval + "'"
          try {
             $ul = @(Get-MgUser -Filter $filter -All -Property Id,accountEnabled -ErrorAction Stop)
             if ($ul.length -eq 0) { $dbu_not_matched_list += $dbu; } elseif ($ul.length -gt 1) {$dbu_match_ambiguous_list += $dbu } else {
                $id = $ul[0].id; 
                $azuread_match_id_list += $id;
                if ($ul[0].accountEnabled -eq $false) {$azuread_not_enabled_list += $id }
             } 
          } catch { $dbu_query_failed_list += $dbu } 
        } else { $dbu_not_queried_list += $dbu }
    }
    
    
  8. 檢視先前查詢的結果。 查看 SAP Cloud Identity Services、資料庫或目錄中是否有任何使用者因為錯誤或遺漏相符專案而無法位於 Microsoft Entra ID 中。

    下列 PowerShell 腳稿會顯示未找到的記錄計數:

    $dbu_not_queried_count = $dbu_not_queried_list.Count
    if ($dbu_not_queried_count -ne 0) {
      Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
    }
    $dbu_duplicate_count = $dbu_duplicate_list.Count
    if ($dbu_duplicate_count -ne 0) {
      Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
    }
    $dbu_not_matched_count = $dbu_not_matched_list.Count
    if ($dbu_not_matched_count -ne 0) {
      Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
    }
    $dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
    if ($dbu_match_ambiguous_count -ne 0) {
      Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
    }
    $dbu_query_failed_count = $dbu_query_failed_list.Count
    if ($dbu_query_failed_count -ne 0) {
      Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
    }
    $azuread_not_enabled_count = $azuread_not_enabled_list.Count
    if ($azuread_not_enabled_count -ne 0) {
     Write-Error "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
    }
    if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count) {
     Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
    }
    $azuread_match_count = $azuread_match_id_list.Count
    Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID." 
    
  9. 當腳本完成時,如果數據源中的任何記錄不在 Microsoft Entra ID 中,就會指出錯誤。 如果應用程式資料存放區中使用者的所有記錄都可能以 Microsoft Entra ID 中的使用者身分,您必須調查哪些記錄不相符,以及原因為何。

    例如,某人的電子郵件位址和 userPrincipalName 可能已在 Microsoft Entra ID 中變更,而不會在應用程式的數據源中更新其對應的 mail 屬性。 或者,使用者可能已經離開組織,但仍位於應用程式的數據源中。 或者,應用程式數據源中可能有廠商或超級系統管理員帳戶,不會對應至 Microsoft Entra 識別碼中的任何特定人員。

  10. 如果有使用者無法位於 Microsoft Entra ID 中,或沒有作用中且無法登入,但您想要在 SAP Cloud Identity Services、資料庫或目錄中更新其存取權,或更新其屬性,您必須更新應用程式、比對規則,或更新或為其建立 Microsoft Entra 使用者。 如需要進行哪些變更的詳細資訊,請參閱 管理與 Microsoft Entra ID 中不符合使用者的應用程式中的對應和用戶帳戶。

    如果您選擇在 Microsoft Entra ID 中建立使用者的選項,您可以使用下列其中一項來大量建立使用者:

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

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

    例如,您可能有資料庫中的使用者,其中名為 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"
    

    然後,您可以使用此腳本,為 SAP Cloud Identity Services、資料庫或目錄與 Microsoft Entra ID 中的使用者不相符的使用者建立 Microsoft Entra 使用者。 請注意,您可能需要修改此腳本,以新增組織所需的其他 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
       }
    }
    
  11. 將任何遺漏的使用者新增至 Microsoft Entra ID 之後,請再次執行步驟 7 中的腳本。 然後從步驟 8 執行腳本。 檢查未報告任何錯誤。

    $dbu_not_queried_list = @()
    $dbu_not_matched_list = @()
    $dbu_match_ambiguous_list = @()
    $dbu_query_failed_list = @()
    $azuread_match_id_list = @()
    $azuread_not_enabled_list = @()
    $dbu_values = @()
    $dbu_duplicate_list = @()
    
    foreach ($dbu in $dbusers) { 
       if ($null -ne $dbu.$db_match_column_name -and $dbu.$db_match_column_name.Length -gt 0) { 
          $val = $dbu.$db_match_column_name
          $escval = $val -replace "'","''"
          if ($dbu_values -contains $escval) { $dbu_duplicate_list += $dbu; continue } else { $dbu_values += $escval }
          $filter = $azuread_match_attr_name + " eq '" + $escval + "'"
          try {
             $ul = @(Get-MgUser -Filter $filter -All -Property Id,accountEnabled -ErrorAction Stop)
             if ($ul.length -eq 0) { $dbu_not_matched_list += $dbu; } elseif ($ul.length -gt 1) {$dbu_match_ambiguous_list += $dbu } else {
                $id = $ul[0].id; 
                $azuread_match_id_list += $id;
                if ($ul[0].accountEnabled -eq $false) {$azuread_not_enabled_list += $id }
             } 
          } catch { $dbu_query_failed_list += $dbu } 
        } else { $dbu_not_queried_list += $dbu }
    }
    
    $dbu_not_queried_count = $dbu_not_queried_list.Count
    if ($dbu_not_queried_count -ne 0) {
      Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
    }
    $dbu_duplicate_count = $dbu_duplicate_list.Count
    if ($dbu_duplicate_count -ne 0) {
      Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
    }
    $dbu_not_matched_count = $dbu_not_matched_list.Count
    if ($dbu_not_matched_count -ne 0) {
      Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
    }
    $dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
    if ($dbu_match_ambiguous_count -ne 0) {
      Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
    }
    $dbu_query_failed_count = $dbu_query_failed_list.Count
    if ($dbu_query_failed_count -ne 0) {
      Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
    }
    $azuread_not_enabled_count = $azuread_not_enabled_list.Count
    if ($azuread_not_enabled_count -ne 0) {
     Write-Warning "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
    }
    if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count -ne 0) {
     Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
    }
    $azuread_match_count = $azuread_match_id_list.Count
    Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID." 
    

將使用者指派給應用程式

現在您已擁有與 Microsoft Entra ID 交談的 Microsoft Entra ECMA 連線 or Host,且已設定屬性對應,接下來您可以繼續設定布建範圍中的人員。

重要

如果您使用混合式身分識別 管理員 istrator 角色登入,則必須使用具有 Application 管理員 istrator、Cloud Application 管理員 istrator 或 Global 管理員 istrator 角色的帳戶註銷並登入。 混合式身分識別 管理員 istrator 角色沒有將使用者指派給應用程式的許可權。

如果LDAP目錄中有現有的使用者,則您應該為 Microsoft Entra ID 中的現有使用者建立應用程式角色指派。 若要深入瞭解如何使用 大量 New-MgServicePrincipalAppRoleAssignedTo建立應用程式角色指派,請參閱 在 Microsoft Entra ID 中控管應用程式的現有使用者。

否則,如果LDAP目錄是空的,則請從具有必要屬性的 Microsoft Entra ID 中選取測試使用者,並將布建到應用程式的目錄伺服器。

  1. 確定用戶選取的所有屬性都會對應至目錄伺服器架構的必要屬性。
  2. 在 Azure 入口網站 中,選取 [企業應用程式]。
  3. 選取內部 部署 ECMA 應用程式應用程式
  4. 在左側的 [管理] 底下,選取 [使用者和群組]。
  5. 選取 [ 新增使用者/群組]。 顯示新增用戶的螢幕快照。
  6. 在 [使用者] 底下,選取 [未選取]。 顯示 [未選取] 的螢幕快照。
  7. 從右側選取使用者,然後選取 [ 選取 ] 按鈕。
    顯示 [選取使用者] 的螢幕快照。
  8. 現在選取 [ 指派]。 顯示 [指派使用者] 的螢幕快照。

測試布建

現在您的屬性已對應,且已指派初始使用者,您可以測試隨選布建與其中一位使用者。

  1. 在執行 Microsoft Entra ECMA 連線 or Host 的伺服器上,選取 [啟動]。

  2. 輸入 run ,然後在方塊中輸入 services.msc

  3. 在 [服務] 清單中,確定 Microsoft Entra 連線 Provisioning Agent 服務和 Microsoft ECMA2Host 服務都在執行中。 如果沒有,請選取 [ 開始]。

  4. 在 Azure 入口網站 中,選取 [企業應用程式]。

  5. 選取內部 部署 ECMA 應用程式應用程式

  6. 在左側,選取 [ 布建]。

  7. 選取 [ 隨選布建]。

  8. 搜尋其中一個測試用戶,然後選取 [ 布建]。 顯示測試隨選布建的螢幕快照。

  9. 幾秒鐘後,目標系統中成功建立的使用者會出現訊息,其中包含使用者屬性清單。 如果出現錯誤,請參閱 針對布建錯誤進行疑難解答。

開始布建使用者

測試隨選布建成功之後,請新增其餘的使用者。

  1. 在 Azure 入口網站 中,選取應用程式。
  2. 在左側的 [管理] 底下,選取 [使用者和群組]。
  3. 確定所有使用者都已指派給應用程式角色。
  4. 變更回布建組態頁面。
  5. 確定範圍設定為僅指派的使用者和群組、將布建狀態開啟,然後選取 [儲存]。
  6. 等候數分鐘才能開始布建。 最多可能需要 40 分鐘的時間。 布建作業完成之後,如下一節所述。

針對布建錯誤進行疑難解答

如果顯示錯誤,請選取 [ 檢視布建記錄]。 查看記錄中是否有狀態為 [失敗] 的數據列,然後按下該數據列。

如果錯誤訊息為 無法建立使用者,請檢查根據目錄架構需求顯示的屬性。

如需詳細資訊,請變更為 [疑難解答與 建議] 索引標籤

如果疑難解答錯誤訊息包含 objectClass 值為 invalid per syntax,則請確定與 objectClass 屬性的布建屬性對應只包含目錄伺服器所辨識的物件類別名稱。

如需其他錯誤,請參閱 針對內部部署應用程式佈建進行疑難解答。

如果您想要暫停布建至此應用程式,請在 [布建組態] 頁面上,將布建狀態變更為 [關閉],然後選取 [ 儲存]。 此動作會停止布建服務在未來執行。

檢查使用者是否已成功布建

等候之後,請檢查目錄伺服器,以確保正在布建使用者。 您對目錄伺服器的查詢將取決於您目錄伺服器所提供的命令。

下列指示說明如何檢查AD LDS。

  1. 開啟 伺服器管理員,然後選取左側的 [AD LDS]。
  2. 以滑鼠右鍵按兩下AD LDS實例,然後從彈出視窗中選取 [ldp.exe]。 Ldp 工具位置的螢幕快照。
  3. 在 [ldp.exe] 頂端,選取 [連線 ion] 和 [連線]。
  4. 輸入下列資訊,然後按兩下列資訊,然後按
    • 伺服器:APP3
    • 埠:636
    • 將複選框放在 SSL 方塊中 顯示檢查使用者之 Ldp 連線的螢幕快照。
  5. 在頂端的 [連線 ion] 下,選取 [系結]。
  6. 保留預設值,然後按兩下 [ 確定]。
  7. 在頂端,選取 [ 檢視樹狀結構]
  8. 針對BaseDN,輸入 CN=App,DC=contoso,DC=lab ,然後按兩下 [ 確定]。
  9. 在左側展開 DN,然後按兩下 CN=CloudUsers,CN=App,DC=contoso,DC=lab。 您應該會看到已從 Microsoft Entra ID 布建的使用者。 顯示使用者 Ldp 系結的螢幕快照。

下列指示說明如何檢查 OpenLDAP。

  1. 使用 OpenLDAP 開啟系統上具有命令殼層的終端機視窗。
  2. 輸入命令 ldapsearch -D "cn=admin,dc=contoso,dc=lab" -W -s sub -b dc=contoso,dc=lab -LLL (objectclass=inetOrgPerson)
  3. 檢查產生的 LDIF 是否包含從 Microsoft Entra ID 布建的使用者。

下一步