# ldapwhoami
SASL/GSSAPI authentication started
ldap_sasl_interactive_bind: 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)
使用 SASL GSSAPI 的 OpenLdap
Kerberos KDC 服务器(以 openLdap 作为数据库后端)
我为
user1
创建了一个票据缓存,用于 GSSAPI 身份验证。
我已为 openLdap 配置并设置了 krb5.keytab,用于通过 KDC 进行身份验证,如
ldap/[email protected]
票证缓存:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]
Valid starting Expires Service principal
03/24/24 03:38:17 03/24/24 15:38:17 krbtgt/[email protected]
renew until 03/31/24 03:38:12
03/24/24 03:39:05 03/24/24 15:38:17 ldap/[email protected]
renew until 03/31/24 03:38:12
键表:
klist -k /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
2 ldap/[email protected]
2 ldap/[email protected]
我错过了什么?
就我而言,问题最终是
krb5.keytab
上供 openLdap 使用的文件权限。
我的
slapd
正在使用 ldap
用户运行。但是 ldap
用户没有对 krb5.keytab
文件的读取权限,只有 root
用户有权限。
之前:
# ls /etc/krb5.keytab -la
-rw------- 1 root root 170 Mar 23 06:25 /etc/krb5.keytab
之后:
# chmod 777 /etc/krb5.keytab
/ # ls /etc/krb5.keytab -la
-rwxrwxrwx 1 root root 170 Mar 23 06:25 /etc/krb5.keytab
更新文件权限以授予
ldap
用户读取访问权限后,一切都按预期进行! (777 可能没有必要,我相信只需要读取权限。)
GSSAPI 身份验证成功后:
# ldapwhoami -H ldap://ldap.example.com
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 56
SASL data security layer installed.
dn:uid=user1,cn=gssapi,cn=auth