FreeBSD(8.2-STABLE)でOpenLDAPを取得してKerberosチケットを使用して認証する際にいくつかの問題が発生しました。脳の不具合が発生したことを願っていますので、明らかなことを見逃したことをお気軽にお知らせください。
ここに物事があります:
Kerberosは問題なく機能します。
kinit
を使用して資格情報を取得でき、これらの資格情報を認証に使用できます(たとえば、sshまたはtelnetログイン用)。
OpenLDAPがインストールされ、基本認証で動作します。
slapdはSASLライブラリに対して明確にリンクされています。 _ldd .../slapd
_レポート:
_libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x800d07000)
_
次の内容の/usr/local/lib/sasl2/slapd.confが存在します。
_mech_list: GSSAPI
_
gSSAPI認証をサポートするslapdレポート:
_$ ldapsearch -x -b '' -s base supportedSASLMechanisms
dn:
supportedSASLMechanisms: GSSAPI
_
_/etc/krb5.keytab
_および_Host/<myhostname>
_のキーを持つ_ldap/<myhostname>
_が存在します。
サンプルのSASLサーバー/クライアントはgssapi認証で正常に動作しているようです。
_# server -p 2222 -s ldap -m gssapi
_
に続く:
_# client -p 2222 -s ldap -m gssapi
_
最終的には次のようになります。
_successful authentication
_
それでも...
GSSAPI認証を受け入れるためにslapdを取得できませんでした。有効なKerberosチケットを使用してldapwhoami
を実行しようとすると、次のエラーが発生します。
_SASL/GSSAPI authentication started
ldap_sasl_interactive_bind_s: Other (e.g., implementation specific) error (80)
additional info: SASL(-1): generic failure: GSSAPI Error: No credentials were supplied, or the credentials were unavailable or inaccessible. (unknown mech-code 0 for mech unknown)
_
同じエラーがslapd
によってログに記録されます。私はここで壁にぶつかった。さまざまなデバッグをオンにしてもslapdは、何も役に立ちません。助けて?
更新:キックのためだけに、Linux(CentOS 5)刑務所内にOpenLDAPをセットアップして、動作が異なるかどうかを確認することにしました。 OpenLDAPパッケージを再構築した後(FreeBSDのLinuxサポートにはepoll()
システムコールが含まれていません)、もう少し便利に思えるエラーメッセージが表示されていました(Kerberosプリンシパルの欠落に関して)。少なくともGSSAPIネゴシエーションを正しく実行しているように見えました。つまり、これはFreeBSDの問題のようです...多分?そこに誰かからの入力を期待しています。
そして...不思議なことにそれは働き始めました。記録のために、これが繰り返し可能なプロセスのように見えるものです:
ldap/...
プリンシパルを必ず追加してください。Slapdがkeytabファイルを読み取れることを確認してください。最も単純なメカニズムは次のとおりです。
chgrp ldap /etc/krb5.keytab
chmod g+r /etc/krb5.keytab
sasl-Host
、sasl-realm
、およびsasl-regexp
を設定することをお勧めします。/usr/local/etc/openldap/ldap.conf
のBASE
とURI
に適切な値を設定します。Kerberosチケットを取得し、ldapwhoami -Y GSSAPI
を実行してテストします。
私はまったく同じ問題を抱えていましたが、最終的には、slapd.confのsasl-Hostをkerberosサーバーのホスト名に設定したことが原因であることがわかりました。
Sasl-Hostをldapホスト名(例:sasl-Host ldap.example.com)に変更すると、正しく機能しました。