使用表達式產生器布建使用者
使用者布建有時可能很困難,例如,當企業應用程式中有重複的使用者使用 Microsoft Entra ID 時。 運算式產生器工具可簡化此程式,提供轉換和對應使用者屬性的彈性。
根據預設,使用者布建會根據UPN進行。 不過,可能有客戶使用舊版方法的實例,而 UPN 的格式可以是 a.b@onmicrosoft.com 和 a_b@onmicrosoft.com。
當我們有這種情況時,應用程式端可能會有使用者布建失敗。 例如,GitHub Copilot (GHCP) 等某些應用程式會以 a-b-test 格式布建使用者,其中 “a” 是 UPN 中的名字,“b” 是第二個名稱,測試 是 GHCP 實例名稱。
現在,如果我們有使用者 a.b@onmicrosoft.com 和 a_b@onmicrosoft.com,GHCP 會布建一個使用者,而另一個用戶會因為重複而失敗。
表達式產生器可根據組織需求啟用屬性轉換和對應,藉以簡化使用者布建。 雖然它提供彈性和精確度,但適當的測試和驗證對於在生產環境中的成功實作至關重要。
範例案例
以下是處理唯一屬性對應和使用者布建挑戰的案例和範例表達式。
案例 1:確保不重複的唯一用戶名稱
當 員工標識碼 等唯一屬性因為安全性而無法使用或限制時,對象標識碼 可作為可靠的選項。 物件標識碼 對每個使用者而言都是全域唯一的,可確保不會重複。
注意
每個應用程式都有使用者布建的字元限制。 例如,GitHub 的字元限制為 39。
表示式:
Append(Mid([displayName], 1, 15), Mid([objectId], 1, 8))
說明:
- 採用用戶顯示名稱的前15個字元。
- 附加使用者 物件識別碼的前八個字元,。
- 結合兩者來建立唯一標識碼。
優點:
- 透過 物件標識碼確保唯一性。
- 降低重複的風險。
案例 2:修改使用者主體名稱 (UPN) 以取得相容性
在某些系統中,UPN 需要修改才能進行適當的整合。 例如,附加物件標識碼的元件可確保唯一性。
表示式:
Append(Mid([objectId], 1, 2), Mid([userPrincipalName], 1, 50))
說明:
從 物件標識碼擷取前 2 個字元。
將這些字元附加至現有的UPN(限制為前50個字元。雖然大部分的使用者通常沒有達到此限制的 UPN,但意圖是從 物件識別碼 附加 2 個字元,以取得唯一性。
案例 3:特定用戶的條件式修改
若要為使用者子集套用自定義變更,可以使用IIF語句的條件式邏輯。
表示式:
IIF([userPrincipalName] = “Aman.Gupta@xpl57.onmicrosoft.com”, Append(Mid([objectId], 1, 2), [userPrincipalName]), IIF( [userPrincipalName] = “Aarti@xpl57.onmicrosoft.com”, Append(Mid([objectId], 1, 2), [userPrincipalName], IIF([userPrincipalName] = “AdeleV@xpl57.onmicrosoft.com”, Append(Mid([objectId], 1, 2), [userPrincipalName], [userPrincipalName] )
表達式會根據 UPN 檢查特定使用者,並藉由將 對象識別碼 的前兩個字元附加至 userPrincipalName 中的 Aman.Gupta@xpl57.onmicrosoft.com、Aarti@xpl57.onmicrosoft.com和 AdeleV@xpl57.onmicrosoft.com來檢查特定使用者。
範例測試案例:
輸入UPN:Aman.Gupta@xpl57.onmicrosoft.com
預期輸出:39Aman.Gupta@xpl57.onmicrosoft.com
更進階的范例如下:
IIF([userPrincipalName] = “Aman.Gupta@xpl57.onmicrosoft.com”, Append([displayName], Append(“”“, Mid([objectId], 1, 8)),IIF([userPrincipalName] = ”harjit@xpl57.onmicrosoft.com“, Append([displayName], Append(”“, Mid([objectId], 1, 8))), IIF( [userPrincipalName] = ”AdeleV@xpl57.onmicrosoft.com“, Append([displayName], Append(”_“, Mid([objectId], 1, 8)), [userPrincipalName] ) )
用於測試的 表示式:
Append(Mid([objectId], 1, 8), [userPrincipalName])
此程式會根據 UPN 檢查特定使用者,並將其 物件 識別子的前八個字元附加至顯示名稱,以套用自定義修改。 包含的使用者越多,表達式就越長,會增加複雜度。 因此,此方法最適合小型使用者子集。
重要建議
- 廣泛測試: 非生產環境中一律測試表達式來驗證功能。
- 字元限制: 確定轉換的用戶名稱不會超過應用程式指定的字元限制(例如,GitHub 有 39 個字元的限制)。
- 檔: 維護表達式和變更的清楚檔,以進行疑難解答和未來的參考。
用於測試的工具和步驟
- 在 Entra ID 或相關的布建介面中開啟表達式產生器。
- 使用測試表達式功能搭配範例用戶數據。
- 驗證輸出以確保適當的轉換。
後續步驟
瞭解特定使用者何時能夠在 Microsoft Entra Application Provisioning 存取應用程式