LDAP トラブルシューティング
一般的なアドバイス: LDAP 構成で問題が発生した場合は、デバッグログをオンにしてください(課題の報告を参照)。
LDAP を使用して認証できません
teamcity-ldap.log ファイルを確認してください。 ログインに失敗するたびに、理由を指定する必要があります。 最も一般的なものは次のとおりです。
ログインフィルターが入力されたログインと一致しません (" ユーザーが入力したログインは teamcity.auth.loginFilter = ... と一致せず、中止します ")
LDAP サーバーが「Invalid credentials」メッセージでログインを拒否しました (" 認証エラーのため、ユーザー「...」にログインできませんでした。 原因: 資格情報が無効です (\[LDAP: エラーコード 49 - 80090308: LdapErr: DSID\-0C090334、コメント: AcceptSecurityContext エラー、データ 525、vece\^\@\]) ")
最初の理由は、ログインが特定のフィルターに一致しないため、ログインに使用できないことを意味します。 例: デフォルトでは、 DOMAIN\username でログインすることはできません — フィルターは /、 \、 @ シンボルを禁止します。 teamcity.auth.loginFilter プロパティを参照してください。
2 番目のエラーは、次のようなさまざまな原因で発生する可能性があります。
ユーザー名でログインしようとしていますが、LDAP サーバーは完全な DN のみを受け入れます。
すべてのユーザーが 1 つの LDAP ブランチに保存されている場合は、teamcity.auth.formatDNプロパティを使用してください。 それ以外の場合は、以下のセクションを参照してください。ログで DN と実際のプリンシパルを確認してください。タイポまたはエスケープされていないシーケンスがある可能性があります。 別の LDAP ツールを使用して、このプリンシパルでログインしてみてください。
セキュリティレベル(
java.naming.security.authentication)を変更してみてください: 「単純」、「強力」、「なし」のいずれかです。
LDAP 内のユーザーは異なるブランチに保存されているため、teamcity.auth.formatDN プロパティを適用できません。 ユーザー名でログインするにはどうすればよいですか?
この機能はバージョン 5.0 から使用できます。 ユーザー名やメールなど、ユーザー (teamcity.users.login.filter) の検索方法を指定する必要があります。 ログインのたびに、TeamCity はログインする 前に LDAP でユーザーを検索し、ユーザー DN を取得してからバインドを実行します。 そのため、TeamCity が検索操作を実行するための資格情報も定義する必要があります (java.naming.security.principal および java.naming.security.credentials)。