web-dev-qa-db-ja.com

Jenkins / Hudson-LDAPグループ*ルックアップ*が機能しない

Active Directoryグループを介してユーザーを認証するために Jenkins を取得しようとしています。

ユーザーを挿入すると、正しく検索されます。グループ名を挿入しても見つかりません。


編集:試行錯誤の結果、認証グループ経由実際には機能します、つまり、グループ_KS-Soft_をリストに追加すると、このグループのユーザーはログインできますただし、ユーザーとグループ名が入力されているリストで、Jenkinsはユーザーかグループかを示すアイコンを表示しようとします。ユーザーアイコンは正しく表示されますが、グループアイコンは常にエラーアイコンです。

したがって、Jenkinsはグループメンバーシップを介してユーザーを認証できるように見えますが、特定のグループ名文字列がディレクトリに存在するかどうかを確認できません。これは技術的にも可能ですか? (たぶん、アイコンの表示だけが台無しになっています。)


Jenkinsの設定は次のとおりです(注:mydomaincomのユーザー名は異なり、残りは正確な値です)

_Server  : ldap://ks-dc01.mydomain.com:389
root DN : dc=mydomain,dc=com
User Search Base : ou=KSUser
User Search Filter : userPrincipalName={0}
Group search base : ou=KSGroups
Manager DN : CN=Placeholder Martin,OU=Benutzer,OU=KSUser,DC=mydomain,DC=com
Manager Password : *****
_

この設定では、ユーザー_[email protected]_をリストに入力すると、Jenkinsがこのユーザーを検索して、ログインできるようになります。

ただし、Jenkinsにグループ名を解決させることができません。 AD Explorer を使用して、グループが実際に_OU=KSGroups_の下にあることを確認します。

AD Explorerで1つのグループが_CN=KS-Soft_として表示され、関心のあるすべてのユーザーを一覧表示するmember属性があります。 (ユーザー[email protected]は、この属性では_CN=Placeholder Martin,OU=Benutzer,OU=KSUser,DC=mydomain,DC=com_としてリストされています。

私はグループのためにこれらの文字列を試しました:

Jenkinsヘルプには_Group search base_について次のように書かれていることに注意してください。

JenkinsがLDAPで行う検索の1つは、ユーザーのグループのリストを見つけることです。

このフィールドは、グループを含む組織単位を識別するために実行されるクエリを決定します。クエリはほとんどの場合「ou = groups」なので、最初に試してください。ただし、ルートDNから検索する場合は、このフィールドを空白のままにすることができます。

ログインしようとすると「管理制限を超えました」などのエラーが発生する場合は、この設定をLDAP構造にできるだけ具体的にして、クエリの範囲を狭めてください。エラーが続く場合は、jenkins.warに含まれている_WEB-INF/security/LDAPBindSecurityRealm.groovy_ファイルを編集する必要がある場合があります。 groupSearchFilter = "(| (member={0}) (uniqueMember={0}) (memberUid={1}))";の行を変更して、LDAPで使用されているグループメンバーシップのフィールドのみをクエリします。例:groupSearchFilter = "(member={0})";次に、Jenkinsを再起動して、ログインを再試行します。

このファイルで両方の値を試しましたが、どちらも機能しません。

2
Martin

今日、Jenkins 2でも同じ問題が発生しました。LDAPが機能するように構成されており、ADユーザーとしてログインでき、ADユーザーをマトリックスに追加できますが、グループをマトリックスに追加すると、そのグループの「ユーザー/グループが見つかりません」と表示されます。 。

最後に次のように修正しました https://wiki.jenkins-ci.org/display/JENKINS/LDAP+Plugin#LDAPPlugin-Groupsearchbase

修正は、グループ検索フィルターとして(& (cn={0}) (objectclass=group) )を追加することです。

デフォルトでは、Jenkinsは(& (cn={0}) (| (objectclass=groupOfNames) (objectclass=groupOfUniqueNames) (objectclass=posixGroup)))を使用します

私たちのADグループは

objectClass: top
objectClass: group
5
jack.chen.job

今朝、ADグループ名に関してJenkinsが大文字と小文字を区別するという難しい方法を見つけました。
誰かが欲求不満で髪を抜いている場合の答えとしてそれを追加するだけです。
ADグループ名は通常、大文字と小文字が区別されないため、まったくわかりません。

2
Tonny

groupSearchBaseを完全に修飾してみてください。つまり、「ou = KSGroups、dc = mydomain、dc = com」です。また、グループ名はほぼ確実に「@ mydomain.com」で終わることはありません(意図的にそのように名前を付けた場合を除く)。

OpenldapツールまたはWindows用の同様のコマンドラインツールから「ldapsearch」を使用して、目的の結果が得られるものが見つかるまでgroupSearchFilterのバリエーションを試してから、インポートすることをお勧めします。それを.groovyファイルに入れます。

1
Handyman5