如何使用 LDAP 组成员同步设置 TeamCity
How to setup TeamCity with LDAP group membership synchronization
这是一个简短的指南,可以帮助您为 TeamCity 设置 LDAP。
在我设法将同步同步到 运行 之前,我个人努力了很久。默认配置文件有很多设置和文本,这可能会让人感到困惑而不是帮助。在 JetBrains 和 Whosebug 上都可以看到很多关于设置组同步问题的帖子。
此设置假定您没有用于导入成员的嵌套组,而是单个组。
如果您想为 TeamCity 使用嵌套组,请查看 https://www.jetbrains.com/help/teamcity/typical-ldap-configurations.html?_ga=2.213872598.374019039.1565610915-964155662.1565610915
的 "Limiting the number of groups to by synchronized" 部分
相应地更改 teamcity.users.filter。
teamcity.users.filter=(&(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=TeamCity Users,OU=Accounts,DC=domain,DC=com))
JetBrains 更喜欢您有一个嵌套组,其中顶级节点是您的 TeamCity 组。但是,这不是我现在想要设置同步的方式。
假设
您已阅读指南https://www.jetbrains.com/help/teamcity/ldap-integration.html
您有一个 Active Directory 用户(或更好:ServiceAccount)可以使用用户名/密码连接到 LDAP
您可以使用 LDAP 登录,但您不知道如何让组成员同步工作。
以下是我设置 TeamCity LDAP 配置文件以同步 AD 组的方法:
ldap-config.properties文件
java.naming.provider.url=ldap://<your server or domain>:3268/DC=YOUR,DC=Domain,DC=Here
java.naming.security.principal=<username>
java.naming.security.credentials=<password>
teamcity.users.login.filter=(sAMAccountName=$capturedLogin$)
teamcity.users.username=sAMAccountName
### USERS SETTINGS ###
teamcity.options.users.synchronize=true
teamcity.users.filter=(objectClass=user)
teamcity.users.property.displayName=displayName
teamcity.users.property.email=mail
# Automatic user creation and deletion during users synchronization
teamcity.options.createUsers=true
teamcity.options.deleteUsers=true
### GROUPS SETTINGS ###
# These settings are mandatory if groups synchronization is turned on (ldap-mapping.xml exists)
# Set to "true" to enable the synchronization for groups listed in ldap-mapping.xml file.
# IMPORTANT NOTE: TeamCity groups should be already created manually and listed in ldap-mapping.xml file.
teamcity.options.groups.synchronize=true
# The group search LDAP filter used to retrieve groups to synchronize.
# The search is performed inside the LDAP entry denoted by "teamcity.groups.base". The result should include all the groups configured in the ldap-mapping.xml file.
teamcity.groups.filter=(objectClass=group)
### OPTIONAL SETTINGS ###
# The time interval between synchronizations (in milliseconds). By default, it is one hour.
teamcity.options.syncTimeout=3600000
# The LDAP attribute of a group storing it's members.
# Note: LDAP attribute should contain the full DN of the member, one attribute per member. See also "teamcity.users.property.memberId".
teamcity.groups.property.member=member
注意: 我使用端口 3268 而不是 389,这是因为默认端口使 TeamCity 在登录时非常慢。在大多数情况下,使用 389 登录需要 5 分钟,而使用 3268 则可以立即登录。
ldap-mapping.xml文件
<!DOCTYPE mapping SYSTEM "ldap-mapping.dtd">
<mapping>
<!-- Example mapping entry:
<group-mapping teamcityGroupKey="GROUP" ldapGroupDn="CN=Group,DC=Example,DC=Com"/>
-->
<group-mapping teamcityGroupKey="YourGroupKey" ldapGroupDn="CN=<DNName>" />
</mapping>
Powershell 和 RSAT
为了获得我添加的每个组的专有名称,我使用了一台安装了 RSAT(远程服务器管理工具)的计算机 https://www.microsoft.com/en-us/download/details.aspx?id=45520。 RSAT 将一些 Active Directory 功能添加到 powershell 中,使您更容易获得所需的 LDAP 设置。
powershell 命令:
get-adgroup <Group name> -properties *
将 DistinguishedName 添加到 ldap-mapping.xml 文件中的 ldapGroupDn 字段以及 teamcityGroupKey,您应该可以开始了。
这是一个简短的指南,可以帮助您为 TeamCity 设置 LDAP。 在我设法将同步同步到 运行 之前,我个人努力了很久。默认配置文件有很多设置和文本,这可能会让人感到困惑而不是帮助。在 JetBrains 和 Whosebug 上都可以看到很多关于设置组同步问题的帖子。
此设置假定您没有用于导入成员的嵌套组,而是单个组。 如果您想为 TeamCity 使用嵌套组,请查看 https://www.jetbrains.com/help/teamcity/typical-ldap-configurations.html?_ga=2.213872598.374019039.1565610915-964155662.1565610915
的 "Limiting the number of groups to by synchronized" 部分相应地更改 teamcity.users.filter。
teamcity.users.filter=(&(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=TeamCity Users,OU=Accounts,DC=domain,DC=com))
JetBrains 更喜欢您有一个嵌套组,其中顶级节点是您的 TeamCity 组。但是,这不是我现在想要设置同步的方式。
假设
您已阅读指南https://www.jetbrains.com/help/teamcity/ldap-integration.html
您有一个 Active Directory 用户(或更好:ServiceAccount)可以使用用户名/密码连接到 LDAP
您可以使用 LDAP 登录,但您不知道如何让组成员同步工作。
以下是我设置 TeamCity LDAP 配置文件以同步 AD 组的方法:
ldap-config.properties文件
java.naming.provider.url=ldap://<your server or domain>:3268/DC=YOUR,DC=Domain,DC=Here
java.naming.security.principal=<username>
java.naming.security.credentials=<password>
teamcity.users.login.filter=(sAMAccountName=$capturedLogin$)
teamcity.users.username=sAMAccountName
### USERS SETTINGS ###
teamcity.options.users.synchronize=true
teamcity.users.filter=(objectClass=user)
teamcity.users.property.displayName=displayName
teamcity.users.property.email=mail
# Automatic user creation and deletion during users synchronization
teamcity.options.createUsers=true
teamcity.options.deleteUsers=true
### GROUPS SETTINGS ###
# These settings are mandatory if groups synchronization is turned on (ldap-mapping.xml exists)
# Set to "true" to enable the synchronization for groups listed in ldap-mapping.xml file.
# IMPORTANT NOTE: TeamCity groups should be already created manually and listed in ldap-mapping.xml file.
teamcity.options.groups.synchronize=true
# The group search LDAP filter used to retrieve groups to synchronize.
# The search is performed inside the LDAP entry denoted by "teamcity.groups.base". The result should include all the groups configured in the ldap-mapping.xml file.
teamcity.groups.filter=(objectClass=group)
### OPTIONAL SETTINGS ###
# The time interval between synchronizations (in milliseconds). By default, it is one hour.
teamcity.options.syncTimeout=3600000
# The LDAP attribute of a group storing it's members.
# Note: LDAP attribute should contain the full DN of the member, one attribute per member. See also "teamcity.users.property.memberId".
teamcity.groups.property.member=member
注意: 我使用端口 3268 而不是 389,这是因为默认端口使 TeamCity 在登录时非常慢。在大多数情况下,使用 389 登录需要 5 分钟,而使用 3268 则可以立即登录。
ldap-mapping.xml文件
<!DOCTYPE mapping SYSTEM "ldap-mapping.dtd">
<mapping>
<!-- Example mapping entry:
<group-mapping teamcityGroupKey="GROUP" ldapGroupDn="CN=Group,DC=Example,DC=Com"/>
-->
<group-mapping teamcityGroupKey="YourGroupKey" ldapGroupDn="CN=<DNName>" />
</mapping>
Powershell 和 RSAT
为了获得我添加的每个组的专有名称,我使用了一台安装了 RSAT(远程服务器管理工具)的计算机 https://www.microsoft.com/en-us/download/details.aspx?id=45520。 RSAT 将一些 Active Directory 功能添加到 powershell 中,使您更容易获得所需的 LDAP 设置。
powershell 命令:
get-adgroup <Group name> -properties *
将 DistinguishedName 添加到 ldap-mapping.xml 文件中的 ldapGroupDn 字段以及 teamcityGroupKey,您应该可以开始了。