我终于设法通过Jenkins LDAP插件连接到我公司的Active Directory。虽然一切正常,但我认识到登录用户的显示名称与预期不符。
我将 Jenkins 安全配置中的字段Display Name LDAP attribute
配置为displayName
。但我的公司决定将其名称附加到 AD 中的每个displayName
属性中。我想摆脱它,因为使用内部 Jenkins 我们知道我们在哪里工作:)
我的想法是简单地从另一个 AD 属性读取显示名称,但没有一个包含确切的 forename 后跟姓氏。问题是:有没有办法在 Jenkins LDAP 插件中连接两个或多个 AD 属性?
我想拥有"姓氏",并且我有以下 AD 属性可供选择:
-
name
= "Forename Surname" 或 "forename.surname" (烦人) -
displayName
="姓氏 |公司" -
givenName
= "名字" -
sn
= "姓氏"
用Java语法说,我只想givenName + " " + sn
.有没有办法在 Jenkins LDAP 插件中做到这一点?
查看 Jenkins LDAP 插件的源代码,它看起来不允许串联。您作为显示名称属性提供的内容必须与一个属性的名称完全匹配。
这些是我所指的行(从第 729 行开始):
Attribute attribute = d.getAttributes().get(getDisplayNameAttributeName());
String displayName = attribute == null ? null : (String) attribute.get();
if (StringUtils.isNotBlank(displayName) && u.getId().equals(u.getFullName()) && !u.getFullName().equals(displayName)) {
u.setFullName(displayName);
}