TeamCity On-Premises 2024.03 Help

配置身份验证设置

TeamCity可以通过内部数据库对用户进行身份验证,或者可以集成到您的系统中,并使用如Windows域、LDAP或Git托管提供商等外部身份验证源。

配置身份验证

身份验证是在 Administration | Authentication 页面上配置的。 当前使用的认证模块也会在那里显示。

TeamCity 提供了几种预配置的身份验证选项(预设),以覆盖最常见的使用场景。 预设是 TeamCity 支持的认证模块的组合:

当您首次登录 TeamCity 时,将启用默认的身份验证,包括内置和基础 HTTP 身份验证模块。

要修改现有设置,请在已启用的认证模块的描述旁边点击 Edit

要切换到不同的预配置方案,请使用 加载预设 按钮。

使用预设

要加载预配置的模块集,请使用 加载预设 按钮,选择所需的选项,并点击 应用 以进行更改。 以下预设可用:

启用多个身份验证模块

TeamCity 允许同时启用多个身份验证模块。

当用户尝试登录时,将逐一尝试各个模块。 如果他们中的一个验证了用户,登录将会成功;如果全部失败,用户将无法登录 TeamCity。

可以使用内部和外部认证的组合。 建议的做法是首先为您的内部员工配置 LDAP 集成,然后再为外部用户添加 内置 认证。 自 TeamCity 2020.2 起,您也可以启用通过 OAuth 服务进行的身份验证。

要添加一个模块:

  1. 点击 Add Module 并从下拉菜单中选择一个模块。

  2. 请通过在 Add Module 对话框中选择复选框,使用模块可用的属性。

  3. 点击 应用保存 您的更改。

通用认证设置

通用设置 区块中,您可以:

用户身份验证设置

TeamCity 服务器第一次启动时没有用户(也没有管理员),因此系统会提示第一位用户创建管理员帐户。 如果您没有被提示管理员帐户,可参考 如何找回管理员密码 来寻找解决方案。

TeamCity 管理员可以在他们的个人资料页面上修改每个用户的身份验证设置。

TeamCity 的用户列表和身份验证模块只是将外部凭证映射到用户。 这意味着单个 TeamCity 用户可以使用不同的模块进行身份验证,只要输入的凭据能映射到同一个 TeamCity 用户即可。 身份验证模块有一个配置,用于将外部用户数据映射到 TeamCity 用户,有些则允许在 TeamCity 用户配置文件上编辑外部用户链接数据。

由捆绑身份验证模块处理用户映射:

  • 内置认证为每个用户保存一个 TeamCity 维护的密码。

  • Windows 域验证允许指定默认域,并假定域帐户名等同于 TeamCity 用户。 域帐户可以在用户个人资料页面上进行编辑。

  • LDAP 集成允许设置 LDAP 属性,以从用户的 LDAP 条目中获取 TeamCity 用户名。

  • 与 Git 托管提供商相应的模块允许管理员通过用户名将用户映射到他们的外部帐户。 每个用户可以将自己的个人资料连接到外部 Git 托管帐户,操作路径为 Your Profile | General | Authentication Settings

在修改认证设置时请谨慎行事:可能会出现管理员在更改认证模块后无法登录的情况。
假设管理员原先的 TeamCity 用户名为 "jsmith" ,并使用默认认证。 然后,认证模块被更改为 Windows 域认证(即,添加了 Windows 域认证模块,并且移除了默认的模块)。 例如,如果该管理员的 Windows 域用户名是 "john.smith",他们将无法再登录: 既不能通过默认的身份验证(因为它已被禁用),也不能通过 Windows 域身份验证,因为他们的 Windows 域用户名不等于 TeamCity 用户名。 解决方案,尽管如此,却很简单:管理员可以使用 superuser account 登录,并在自己的个人资料页面上更改其 TeamCity 用户名或者指定他们的 Windows 域用户名。

特殊用户帐户

默认情况下,TeamCity 具有一个具有最大权限的 超级用户 帐户,还有一个具有最小权限的 访客用户 帐户。 这些帐户没有个人设置,例如 Changes 页面和个人资料信息,因为它们并非与任何特定个体相关,而是用于特殊的使用场景。

凭证认证模块

内置认证

默认情况下,TeamCity 使用内置认证,并自主维护用户及其密码。

当用户首次登录 TeamCity 时,系统将提示用户创建 TeamCity 用户名和密码,这些信息将被存储在 TeamCity 中并用于身份验证。 如果您已安装 TeamCity 并登录了它,那就意味着已启用内建授权,而且所有用户数据都存储在 TeamCity 中。

在开始时,用户数据库是空的。 新用户要么由 TeamCity 管理员 添加,要么在身份验证模块设置中启用了相应选项后,用户可以自行注册。 所有新创建的用户都属于 All Users 组,并拥有分配给该组的所有角色。 如果新注册用户需要一些特定的 角色 ,那么应通过 所有用户 群组 授予 这些角色。

默认情况下,用户被允许在他们的个人资料页面上更改自己的密码。

基于令牌的认证

这个模块允许用户通过他们自己创建和使无效的 访问令牌进行身份验证。

这个身份验证模块默认为启用状态。

Windows 域验证

允许用户使用 Windows 域名和密码进行登录。 TeamCity 验证这些凭证:服务器应当了解用户用于登录的域名。 用户名支持的语法是 DOMAIN\user.name<用户名>@<域名>

除了使用登录表单进行登录外,您还可以启用 NTLM HTTP Authentication 单点登录。
如果您选择了 "Microsoft Windows Domain" 预设,除了通过 Windows 域登录外,Basic HTTPNTLM 认证模块默认情况下都会被启用。

指定默认域

为了让用户在不指定用户名的域的部分的情况下使用登录表单进入系统, 请按照以下步骤操作:

  1. 前往 Administration | Authentication

  2. 点击位于 Microsoft Windows 域 验证描述旁边的 编辑

  3. 将名称设置在 Default domain 字段中。

  4. 点击 DoneSave 您的更改。

在登录时注册新用户

默认设置允许用户从登录页面进行注册。 新用户的 TeamCity 用户名将与其 Windows 域帐户相同。
所有新创建的用户都属于 所有用户 组,并拥有分配给此组的所有角色。 如果新注册用户需要一些特定的 角色 ,那么应通过 所有用户 群组 授予 这些角色。

要禁用登录时的新用户注册:

  1. 前往 Administration | Authentication

  2. 点击位于 Microsoft Windows 域 验证描述旁边的 编辑。 取消勾选 允许用户从登录页面注册 框。

  3. 点击旁边的 编辑 NTLM HTTP 认证描述。 清理 允许用户从登录页面注册 框。

Linux 特定配置

如果您的 TeamCity 服务器在 Linux 下运行,JCIFS 库被用于 Windows 域登录。 这只支持启用了 SMB (SMBv1)的 Windows 域服务器。 SMB2 不受支持。
库是根据 <TeamCity 数据目录>/config/ntlm-config.properties 文件中指定的属性进行配置的。 对文件所做的修改会立即生效,无需重新启动服务器。

JCIFS 库设置不可以在运行时更改,或者只能通过传递 -Djcifs.properties JVM 选项的属性文件来设置影响 HTTP NTLM 设置的设置。

如果默认设置不适用于您的环境,可以参考 JCIFS 获取所有可用的配置属性。
如果库找不到用于进行身份验证的域控制器,可以考虑将 jcifs.netbios.wins 属性添加到带有您的 WINS 服务器地址的 ntlm-config.properties 文件中。 对于其他域服务定位属性,请参阅 JCIFS

LDAP 认证

请参考 专用页面

HTTP / SSO 身份验证模块

基本 HTTP 认证

请参考 通过 HTTP 访问服务器 以获取有关基础 HTTP 认证的详细信息。

NTLM HTTP 认证

请参考 专用页面

Bitbucket Cloud

用户可以使用 Bitbucket Cloud 帐户登录 TeamCity。

在启用此模块之前,您需要在 Root 项目的设置中配置一个 Bitbucket Cloud 连接,并在 Bitbucket 中设定一个专用应用程序。

要登录,请点击登录表单上方的 Bitbucket 图标,重定向后,批准 TeamCity 应用程序。 如果您的 Bitbucket 邮箱已注册并已在 in TeamCity 和 Bitbucket 上进行了验证,则这个 Bitbucket 帐户会被映射到相应的 TeamCity 用户,并且您将会被登入。 否则,除非禁用了 允许首次登录时创建新用户 选项,否则 TeamCity 将会创建一个新的用户配置文件。 也可以将现有的 TeamCity 用户 与 Bitbucket Cloud 配置文件进行映射。

设置

描述

允许在首次登录时创建新用户

默认启用。 如果禁用此选项,当提供的外部邮箱无法识别时,TeamCity 将不会创建新用户。 如果您使用的是公开可用的 TeamCity 服务器并希望限制对它的访问,这将非常有帮助。

允许任何 Bitbucket 用户登录

默认禁用。

如果启用了此选项,任何工作区的用户都可以访问 TeamCity 服务器。 要限制对特定工作区的访问,请使用 限制认证 设置。

限制认证

一系列由逗号分隔的 workspaces' ID。

此列表限制了可以使用其 Bitbucket Cloud 帐户在 TeamCity 中注册或进行身份验证的用户集,仅限于指定的工作区。 当与 允许在首次登录时创建新用户 选项结合使用时,此设置可以自动注册在指定工作区中有电子邮件且在 TeamCity 中没有用户档案的用户。

GitHub

用户可以使用其 GitHub.com 和 GitHub Enterprise 帐户登录 TeamCity。 TeamCity 为此任务提供了三个独立的模块。

  • GitHub.com 模块要求您为 Root 项目创建一个 OAuth GitHub.com 连接

  • GitHub Enterprise 模块要求您为 Root 项目创建一个 OAuth GitHub Enterprise 连接

  • GitHub App 模块要求您为 Root 项目创建一个 GitHub App。 这种连接类型适用于 GitHub.com 和 GitHub Enterprise 的用户。

要登录,用户必须点击用户名字段上方的 GitHub 图标。 如果此 GitHub 邮箱的用户已经注册且邮箱在 in TeamCity 和 GitHub 上都经过了验证,用户的 GitHub 帐户将被映射到相应的 TeamCity 用户,而且该用户将被登录。

否则,TeamCity 将创建一个新的用户配置文件。 您可以通过相应的身份验证模块设置来禁用这种行为。 在这种情况下,只有已经注册的用户才能登入。 也可以将现有的 TeamCity 用户 与 GitHub.com 的个人资料进行映射。

所有三个模块都有相同的设置:

设置

描述

允许在首次登录时创建新用户

默认启用。

如果禁用此选项,当提供的外部邮箱无法识别时,TeamCity 将不会创建新用户。 如果您使用的是公开可用的 TeamCity 服务器并希望限制对它的访问,这将非常有帮助。

允许任何 GitHub 用户登录

默认禁用。

如果启用此选项,任何组织的用户都可以访问 TeamCity 服务器。 要限制对特定组织的访问,请使用 限制认证 设置。

将身份验证限制为来自指定组织的用户

一组以逗号分隔的 组织 的 ID。

这个列表限制了可以使用他们的 GitHub 账号在 TeamCity 中注册或验证的用户集,只限于指定的组织。 当与 允许在首次登录时创建新用户 选项结合使用时,此设置允许自动注册在指定组织中拥有电子邮件且在 TeamCity 中没有用户配置文件的用户。

GitLab.com

自2020.2版本起,用户可以使用 GitLab.com 帐户登录 TeamCity。

在启用此模块之前,您需要在根项目的设置中配置一个 GitLab.com connection,并在 GitLab 中设置一个专用应用程序。

要登录,请点击登录表单上方的 GitLab 图标,重定向后,批准 TeamCity 应用程序。 如果您的 GitLab 邮箱已经注册并且同时在 TeamCity 和 GitLab 上验证,那么这个 GitLab 帐户将与相应的 TeamCity 用户关联,您将被登录。 否则,除非禁用了 允许首次登录时创建新用户 选项,否则 TeamCity 将会创建一个新的用户配置文件。 也可以将现有的 TeamCity 用户与 GitLab.com 的个人资料进行映射。

设置

描述

允许在首次登录时创建新用户

默认启用。

如果禁用此选项,当提供的外部邮箱无法识别时,TeamCity 将不会创建新用户。 如果您使用的是公开可用的 TeamCity 服务器并希望限制对它的访问,这将非常有帮助。

允许任何 GitLab 用户登录

默认禁用。

如果启用此选项,任何组的用户都可以访问 TeamCity 服务器。 为了限制特定群体的访问权限,请使用 限制认证 设置。

限制认证

一组由逗号分隔的 groups' ID 列表。

此列表限制了可以使用其 GitLab 帐户在 TeamCity 中注册或验证的用户集,仅限于指定的群组。 当与允许首次登录时创建新用户选项结合使用时,此设置可以自动注册那些在指定群组中有邮箱且在 TeamCity 中没有用户档案的用户。

GitLab CE / EE

用户可以使用 GitLab CE / EE 帐户登录 TeamCity。

在启用此模块之前,您需要在 Root 项目的设置中配置一个 GitLab CE/EE 连接,并在 GitLab 中设置一个专用应用程序。

要登录,请点击登录表单上方的 GitLab 图标,重定向后,批准 TeamCity 应用程序。 如果您的 GitLab 邮箱已经注册并且同时在 TeamCity 和 GitLab 上验证,那么这个 GitLab 帐户将与相应的 TeamCity 用户关联,您将被登录。 否则,除非禁用了 允许首次登录时创建新用户 选项,否则 TeamCity 将会创建一个新的用户配置文件。 也可以将现有的 TeamCity 用户 与 GitLab CE/EE 配置文件进行匹配。

设置

描述

允许在首次登录时创建新用户

默认启用。

如果禁用此选项,当提供的外部邮箱无法识别时,TeamCity 将不会创建新用户。 如果您使用的是公开可用的 TeamCity 服务器并希望限制对它的访问,这将非常有帮助。

允许任何 GitLab 用户登录

默认禁用。

如果启用此选项,任何组的用户都可以访问 TeamCity 服务器。 为了限制特定群体的访问权限,请使用 限制认证 设置。

限制认证

一组由逗号分隔的 groups' ID 列表。

此列表限制了可以使用其 GitLab 帐户在 TeamCity 中注册或验证的用户集,仅限于指定的群组。 当与允许首次登录时创建新用户选项结合使用时,此设置可以自动注册那些在指定群组中有邮箱且在 TeamCity 中没有用户档案的用户。

Google

从 2022.10 版本开始,用户可以使用 Google 帐户登录 TeamCity。

在启用此模块之前,您需要在 Root 项目的设置中配置一个 Google connection

要登录,请点击登录表单上方的 Google 图标,重定向后,批准 TeamCity 应用程序。 如果您的 Google 电子邮件已被用户注册并已通过在 TeamCity 中的验证,那么这个 Google 帐户将会被映射到对应的 TeamCity 用户,您将会被自动登录。 否则,除非禁用了 允许首次登录时创建新用户 选项,否则 TeamCity 将会创建一个新的用户配置文件。 也可以将现有的 TeamCity 用户 映射到 Google 个人资料。

设置

描述

允许在首次登录时创建新用户

默认启用。

如果禁用此选项,当提供的外部邮箱无法识别时,TeamCity 将不会创建新用户。 如果您使用的是公开可用的 TeamCity 服务器并希望限制对它的访问,这将非常有帮助。

跳过双因素认证

为减少冗余验证,如果您的组织已要求用户登录他们的 Google 帐户时使用二步验证(2FA),请勾选此选项。

如果您希望用户无论如何都需要通过额外的验证,那么请取消勾选此设置。

了解更多:降低过度的授权请求

允许所有域的用户登陆,包括 gmail.com

默认禁用。

如果启用此选项,任何域的用户都可以访问 TeamCity 服务器。 为了限制对特定域的访问,请使用 限制验证 设置。

限制认证

一份由逗号分隔的 组织域名 列表。 例如, company.com,another.com

这个列表限制了可以使用其 Google 帐户在 TeamCity 中注册或认证的用户群体,只有指定域的用户可以进行操作。

当与 允许在首次登录时创建新用户 选项结合使用时,此设置允许自动注册在指定域中有电子邮件并且在 TeamCity 中没有用户配置文件的用户。

JetBrains Space

在启用此模块之前,您需要在 JetBrains Space 中创建一个专用应用,并在 Root 项目的设置中配置到它的连接,如此处所述。

在连接配置完成后,前往 Administration | Authentication 并进行以下操作:

  1. 点击 添加模块 并选择 JetBrains Space 类型。

  2. 选择您是否希望在首次登录时允许创建新用户。 如果您使用的是公开可用的 TeamCity 服务器并希望限制对它的访问,这将非常有帮助。

  3. 如果您希望用户在登录时通过额外的 2FA 验证(即使他们在登录 Space 时通过了),请取消选中 跳过双因素认证设置。 了解更多:降低过度的授权请求

  4. 保存该模块。

要登录,请点击 TeamCity 登录表单上方的 JetBrains Space 图标,重定向后,批准 TeamCity 应用程序。

Azure DevOps Services

在启用此模块之前,您需要在 Root 项目的设置中创建到 Azure DevOps Services 实例的 专用连接

设置

描述

跳过双因素认证

为了减少冗余验证,如果您的组织已经要求用户使用二次身份验证(2FA)登录他们的 Azure DevOps 帐户,请检查此选项。

如果您希望用户无论如何都需要通过额外的验证,那么请取消勾选此设置。

了解更多:降低过度的授权请求

允许在首次登录时创建新用户

默认启用。

如果禁用此选项,当提供的外部邮箱无法识别时,TeamCity 将不会创建新用户。 如果您使用的是公开可用的 TeamCity 服务器并希望限制对它的访问,这将非常有帮助。

允许任何 Azure 用户登录

默认禁用。

如果启用此选项,任何组织的用户都可以访问 TeamCity 服务器。 要限制对特定组织的访问,请使用 限制认证 设置。

限制认证

一份由逗号分隔的 Azure DevOps 组织 列表。

这个列表限制了可以使用他们的 Azure 帐户在 TeamCity 中注册或认证的用户集,仅限于指定组织的用户。

当与 允许首次登录时创建新用户 选项结合使用时,该设置允许自动注册在指定组织中拥有帐户且在 TeamCity 中没有用户个人资料的用户。

要登录,请点击位于 TeamCity 登录表单上方的 Azure DevOps 图标,重定向后,批准 TeamCity 应用程序。

HTTP SAML 2.0

此模块通过 SAML 2.0 在 TeamCity 中启用单点登录认证。 已确认支持 OktaOneLoginAWS SSOAD FS 等其他 SSO 提供商。

该模块依赖于经过验证的第三方 SAML Authentication plugin

要启用模块,在 Administration | Authentication

  1. 点击 Add module 并选择 HTTP-SAML.v2 类型。

  2. 保存设置,并前往 Administration | SAML Settings

  3. Single Sign-On URL(接收方)数值复制到服务提供商配置部分下。 应如下所述在您的 SSO 应用程序的设置中输入。

在配置 TeamCity 中的 SAML 设置之前,您需要在您的 SSO 提供商一方创建一个专用的应用程序。 这是一个关于 Okta 的快速指南示例:

  1. 在 Okta 仪表板中,打开 Applications

  2. 点击 创建应用集成 并选择 SAML 2.0 类型。

  3. 为应用命名,并在 Configure SAML 标签页中,输入您在上述说明的第三步中复制的 TeamCity 服务器的单点登录 URL。

  4. 保存应用程序。

  5. 在应用程序设置的 任务分配 标签页上,点击 分配 并从您的 Okta 群组中选择所有将被授予访问 TeamCity 服务器权限的人员。

  6. General 标签页上,点击 查看设置指南。 您将看到需要复制到 TeamCity 的配置值。

您可以在 插件的存储库 中找到关于 Okta 的详细操作指南。 其他 SSO 提供商的设置可能会有所不同,但关键操作是相同的:

  • 在应用的设置中输入 TeamCity 单点登录 URL。

  • 确保所有必要的 SSO 用户配置文件都已与应用程序关联。

  • 复制应用程序的 SSO URL 、发行者 URL 和证书的值。

在应用创建后,接着在 TeamCity 中配置 SAML Settings

设置

描述

身份提供者配置

请输入从应用程序设置中复制的 SSO URL 、发行者 URL 和证书的值。

如有需要,您可以在即将在 SSO 提供商一方更新证书时,上传一个额外的证书。 在 TeamCity 中预加载新的证书将确保在更新期间和之后与提供商之间的信任连接不间断。

服务提供商配置

包含接收服务器的自动生成的 SSO URL,即 TeamCity。 在配置此集成到 SSO 提供商端时,必须输入此 URL。

在您首次保存 SAML 设置后,TeamCity 会将它们导出到 SP metadata XML 文件中。 此设置部分提供了此文件的下载链接。 您可以在您的 SSO 提供商端上传此文件,以自动应用 TeamCity 配置。

自动创建用户

如果 TeamCity 检测到通过 SAML 登录的用户的电子邮件已经属于某个 TeamCity 用户配置文件,它将把他们作为此用户进行身份验证。

如果无法识别该电子邮件,行为将取决于此选项的值:

  • 如果启用,系统将会用这个电子邮件创建一个新的用户资料。

  • 如果禁用,将拒绝授权此用户。

登陆按钮标签

定义登录表单上的 SSO 登录按钮的名称。

SAML 严格模式

检查请求URL是否符合预期的回调URL(配置为 Teamcity 根URL)。 我们强烈建议您在生产环境中启用此选项,作为额外的安全检查。

SAML 回调 CORS 过滤器异常

向 Teamcity 的 CORS 过滤器添加一个例外:如果对 SAML 登录回调 URL 发送了一个 POST 请求,并且它包含一个 SAML 消息,那么它将被视为符合 CORS 安全的。

隐藏登录表单

允许隐藏具有 TeamCity 内部用户名和密码的普通登录表单,以便用户不会对其感到困扰。

最后修改日期: 16日 7月 2024年