一般的な LDAP 構成文字列
このページには、さまざまな構成ケース用の ldap-config.properties ファイルのサンプルが含まれています。
基本的な LDAP ログイン
最小限の動作構成の例を以下に示します。 より安全なオプションとして、TLS/SSL 暗号化 LDAPS を使用することをお勧めします。
Windows Active ディレクトリ
java.naming.provider.url=ldaps://dc.example.com:636/DC=example,DC=com
java.naming.security.principal=<username>
java.naming.security.credentials=<password>
teamcity.users.login.filter=(sAMAccountName=$capturedLogin$)
teamcity.users.username=sAMAccountName
sAMAccountName は 20 シンボルに制限されていることに注意してください。 ユーザー名全体を含む別の属性を使用することをお勧めします。
UNIX
java.naming.provider.url=ldaps://dc.example.com:636/DC=example,DC=com
java.naming.security.principal=<username>
java.naming.security.credentials=<password>
teamcity.users.login.filter=(uid=$capturedLogin$)
teamcity.users.username=uid
この場合、TeamCity はユーザーパスワードを保存しません。 ユーザーがログインするたびに、ログインフォームに入力された資格情報を使用して LDAP に直接ログインすることによって認証が実行されます。
バックアップ LDAP サーバーの指定
次のように、 java.naming.provider.url プロパティでバックアップ LDAP サーバーを指定できます。
# The second URL is used when the first server is down.
java.naming.provider.url=ldaps://example.com:636/DC=example,DC=com ldaps://failover.example.com:636/DC=example,DC=com
特定の LDAP グループ内のユーザーのみを対象とした基本的な LDAP ログイン
特定のユーザグループのユーザだけがログインを許可されます。 ユーザはログインするためにドメインなしの部分のみにユーザ名を入力する必要があります。 例は Windows Active Directory の場合です。
java.naming.provider.url=ldaps://example.com:636/DC=example,DC=com
java.naming.security.principal=<username>
java.naming.security.credentials=<password>
# filtering only users with specified name and belonging to LDAP group "Group1" with DN "CN=Group1,CN=Users,DC=example,DC=com"
teamcity.users.login.filter=(&(sAMAccountName=$capturedLogin$)(memberOf=CN=Group1,CN=Users,DC=example,DC=com))
#teamcity.users.username=sAMAccountName
# Allow only username part without domain (optional)
teamcity.auth.loginFilter=[^/\\\\@]+
# No synchronization, just login.
teamcity.options.users.synchronize=false
teamcity.options.groups.synchronize=false
ユーザー詳細同期を伴う Active ディレクトリ
ユーザーは、ドメイン部分を除いたドメインのお名前で TeamCity にログインできます。また、すべての Active ディレクトリのエントリを読み取れる、パスワードが "secret" の "teamcity" アカウントがあります。 TeamCity ユーザーの表示お名前とメールアドレスは、Active ディレクトリから同期されます。
java.naming.provider.url=ldaps://example.com:636/DC=example,DC=com
java.naming.security.principal=CN=teamcity,CN=Users,DC=example,DC=com
java.naming.security.credentials=secret
teamcity.users.login.filter=(sAMAccountName=$capturedLogin$)
teamcity.users.username=sAMAccountName
# User synchronization: on, synchronize display name and email.
teamcity.options.users.synchronize=true
teamcity.users.filter=(objectClass=user)
teamcity.users.property.displayName=displayName
teamcity.users.property.email=mail
ユーザー詳細同期とユーザー作成を伴う Active ディレクトリ
ユーザーは、ドメイン部分を除いたドメインのお名前で TeamCity にログインできます。また、すべての Active ディレクトリのエントリを読み取れる、パスワードが "secret" の "teamcity" アカウントがあります。 TeamCity ユーザーの表示お名前とメールアドレスは、Active ディレクトリから同期されます。 TeamCity データベースに存在しないユーザーが作成されます。 Active ディレクトリに存在しなくなったユーザーは、TeamCity ユーザーデータベースから削除されます。
java.naming.provider.url=ldaps://example.com:636/DC=example,DC=com
java.naming.security.principal=CN=teamcity,CN=Users,DC=example,DC=com
java.naming.security.credentials=secret
teamcity.users.login.filter=(sAMAccountName=$capturedLogin$)
teamcity.users.username=sAMAccountName
# User synchronization: on, synchronize display name and email.
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 user synchronization
teamcity.options.createUsers=true
teamcity.options.deleteUsers=true
グループ同期を伴う Active ディレクトリ
1 つ以上のグループマッピングが定義された ldap-mapping.xml ファイルがあるはずです。
ldap-config.properties ファイル:
java.naming.provider.url=ldaps://example.com:636/DC=example,DC=com
java.naming.security.principal=CN=teamcity,CN=Users,DC=example,DC=com
java.naming.security.credentials=secret
teamcity.users.login.filter=(sAMAccountName=$capturedLogin$)
teamcity.users.username=sAMAccountName
# User synchronization is on, synchronize display name and email.
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 synchronization is on
teamcity.options.groups.synchronize=true
# The group search LDAP filter used to retrieve groups to synchronize.
# The result includes all the groups configured in the ldap-mapping.xml file.
teamcity.groups.filter=(objectClass=group)
# The LDAP attribute of a group storing its members.
teamcity.groups.property.member=member
同期するグループ数の制限
teamcity.users.filter プロパティは、ユーザーの同期中に処理されるユーザーアカウントの数を制限できます。
Active ディレクトリに "TeamCity Users" グループを作成し、必要なすべてのグループをこのグループに含めることをおすすめします。たとえば、次のような Active ディレクトリ構造になる場合があります:
その後、 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))
この場合、TeamCity は、ユーザーが対応する Active ディレクトリグループのメンバーである場合にのみアカウントを作成します。 入れ子になったグループがサポートされています。
あるいは、いくつかのグループをリストすることができます。
teamcity.users.filter=(&(objectClass=user)(|(memberOf=CN=GroupOne,OU=myou,DC=company,DC=tld)(memberOf=CN=GroupTwo,OU=myou,DC=company,DC=tld)))
TeamCity にサインインできるユーザーを制限するには、 teamcity.users.login.filter プロパティも変更する必要があります:
teamcity.users.login.filter=(&(sAMAccountName=$capturedLogin$)(memberOf:1.2.840.113556.1.4.1941:=CN=TeamCity Users,OU=Accounts,DC=domain,DC=com))
フィルター構文の詳細については、 Microsoft のドキュメント(英語)を参照してください。 AD 属性の詳細については、 Microsoft のドキュメント(英語)を参照してください。
2026 年 9 月 11 日