LDAPサーバーをインストールし、認証にLDAPを受け入れるためにJenkinsを構成しています。 Jenkinsパラメーターでは、パラメーターRoot DN
で奇妙な動作をします。
ドキュメント 言う:
ルートDN
ユーザーを認証し、このユーザーに与えられた役割を決定するために、Jenkinsは複数のLDAPクエリを実行します。
[...]
しかし実際には、LDAPサーバーはデータに対して広範なインデックスを維持しているため、このフィールドを指定する必要はほとんどありません— Jenkinsに話してこれを理解させる必要がありますLDAPに。
この値を指定すると、フィールドは通常dc = acme、dc = orgのようになります。
奇妙な振る舞い:パラメーターを指定しないと、ユーザーが見つかりません。その他のパラメーターにはデフォルト値があります。
LDAPは私にとって新しいので、おそらく何か間違ったことをしています。 slapd
を使用してLDAPツリーを作成しました。同じく作成したノードadenoyelle
の下に1人のユーザーPeople
を作成しました。以下のldapsearch
の結果を参照してください:
root@myserver:~# ldapsearch -xLLL -b 'dc=acme,dc=com'
dn: dc=acme,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: acme.com
dc: acme
dn: cn=admin,dc=acme,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
dn: ou=people,dc=acme,dc=com
cn: people
objectClass: organizationalRole
objectClass: top
ou: people
dn: uid=adenoyelle,ou=people,dc=acme,dc=com
objectClass: account
objectClass: top
objectClass: simpleSecurityObject
uid: adenoyelle
Root DN
を空白にすると、ユーザーは認証できなくなります。しかし、パラメータにこの値を指定すると機能します:
ou = people、dc = acme、dc = com
私は何が間違っているのですか? LDAPノードが間違っていると思いますが、理由がわかりません。たぶんobjectClass
値に問題がありますか?
この値を省略すると、LDAPクライアントはベースDNとして使用されるルートDSEをサーバーに照会します。 slapdが正しく設定されていない場合、ldapsearchはその値の取得に失敗するため、クエリに失敗します。
詳細はこちら: OpenLDAPからルートDSEが返されません 、引用:
これは実際にはバグとして提出されます #427842 Ubuntu 9.10(カルマ)に対して。
これを修正するには、以下をfixRootDSE.ldifにコピーします。
dn: olcDatabase={-1}frontend,cn=config changetype: modify add: olcAccess olcAccess: to dn.base="" by * read olcAccess: to dn.base="cn=subschema" by * read
そして実行します
Sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f fixRootDSE.ldif
これにより、ルートDSEへの匿名アクセスが可能になります。