用户预配有时可能很困难,例如,在使用 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:确保不重复的唯一用户名
如果 员工 ID 等唯一属性因安全性而不可用或受到限制,对象 ID 可用作可靠选项。 对象 ID 对于每个用户来说都是全局唯一的,确保不会重复。
注意
每个应用程序都有用户预配的字符限制。 例如,GitHub 的字符限制为 39。
表达式:
Append(Mid([displayName], 1, 15), Mid([objectId], 1, 8))
说明:
- 获取用户显示名称的前 15 个字符。
- 追加用户 对象 ID的前八个字符。
- 通过组合这两个标识符来创建唯一标识符。
优点:
- 通过 对象 ID确保的唯一性。
- 缓解重复的风险。
方案 2:修改用户主体名称(UPN)以保持兼容性
在某些系统中,UPN 需要修改才能正确集成。 例如,追加对象 ID 的各个部分可确保唯一性。
表达式:
Append(Mid([objectId], 1, 2), Mid([userPrincipalName], 1, 50))
说明:
从 对象 ID中提取前 2 个字符。
将这些字符追加到现有的 UPN(限制为前 50 个字符)。虽然大多数用户通常没有达到此限制的 UPN,但目的是将 对象 ID 中的 2 个字符追加到完整的 UPN,以便唯一性)。
方案 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([objectId], 1, 2), [userPrincipalName], [userPrincipalName] ] )
表达式基于 UPN 检查特定用户,并通过将 对象 ID 的前两个字符追加到 userPrincipalName for 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 检查特定用户,并通过将 对象 ID 的前八个字符追加到显示名称中来应用自定义修改。 包含的用户越多,表达式就越长,这会增加复杂性。 因此,此方法最适合小型用户子集。
关键建议
- 广泛测试: 非生产环境中始终测试表达式以验证功能。
- 字符限制: 确保转换后的用户名不超过应用程序指定的字符限制(例如,GitHub 有 39 个字符的限制)。
- 文档: 维护有关表达式和更改的明确文档,以便进行故障排除和将来参考。
用于测试的工具和步骤
- 在 Entra ID 或相关的预配接口中打开表达式生成器。
- 将测试表达式功能与示例用户数据配合使用。
- 验证输出以确保正确转换。