具有kerberosauthentication的LDAP syncrepl

我正在尝试使用syncrepl为LDAP设置复制服务器。 我想使用Kerberos来validation消费者,因为我们已经设置好了,而且看起来更安全。 我的提供者和消费者的数据库定义如下。

当我启动消费者,我得到这个错误:

GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Credentials cache file '/tmp/krb5cc_55' not found) 

我认为这意味着消费者没有有效的TGT。 如何configuration消费者以获得有效的TGT? 我读过一些推荐使用k5start或cron作业的较旧的源代码。 这仍然是做到这一点的方式吗?

slapd.conf手册页指出authcidauthzid可以和bindmethod=sasl一起使用,但是它没有指定如何格式化这些页面。 我应该在这里放一个DN还是一个kerberos校长或者其他的东西? 我需要指定这些吗?

感谢您的帮助

消费者configuration:

 database bdb suffix "dc=example" rootdn "uid=someuser,cn=realm,cn=gssapi,cn=auth" directory /var/lib/ldap dirtyread overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100 syncrepl rid=1 provider=ldap://provider.realm type=refreshAndPersist starttls=yes searchbase="dc=example" schemachecking=off bindmethod=sasl saslmech=gssapi retry="10 +" 

提供程序configuration

 database bdb suffix "dc=example" rootdn "uid=someuser,cn=realm,cn=gssapi,cn=auth" directory /var/lib/ldap dirtyread overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100 

我认为这意味着消费者没有有效的TGT。 如何configuration消费者以获得有效的TGT? 我读过一些推荐使用k5start或cron作业的较旧的源代码。 这仍然是做到这一点的方式吗?

是的,这正是它的意思。

是的,它仍然是,尽pipe最新的Krb5有另一个选项叫做client keytab 。

slapd.conf手册页指出authcid和authzid可以和bindmethod = sasl一起使用,但是它没有指定如何格式化这些页面。 我应该在这里放一个DN还是一个kerberos校长或者其他的东西? 我需要指定这些吗?

通常是一个主体或只是一个简单的用户 slapd会将接收到的ID转换为像uid=foo@realm,cn=gssapi,cn=auth这样的伪DN,您可以直接在ACL中使用它,也可以使用authz-regexp将其转换为实际的DN。

我不记得authcid与GSSAPI(如果有的话)服务的目的是什么。 IIRC,这个机制只使用从你的票确定的身份。 (authzid同时独立于机制工作。)

我使用以下configuration获得了kerberos身份validation的syncrepl。 这个关于nslcd.conf的网站说authzid的格式应该是“dn:<distinguished name>”或“u:<user name>”。 我还使用k5start在/tmp/krb5cc_55 krb5cc_55上创build了一个用户someuser@REALM的caching文件,并创build了chown ldap:ldap 。 请注意,55是ldap uid; 不过,我不确定有必要给这个文件命名。 在我的提供程序configuration中,我将someuser指定为rootdn以允许它访问整个数据库。

我只是想澄清一下,这是对我有用的,但我对ldap有一个有限的理解,所以我不能保证它可以在其他地方工作,我不知道是否一切在这个configuration是必要的。

 syncrepl rid=1 provider=ldap://provider.realm type=refreshAndPersist starttls=yes searchbase="dc=realm" schemachecking=off retry="10 +" tls_cacert="/path/to/ca.crt" bindmethod=sasl saslmech=gssapi authcid="someuser@REALM" authzid="uid=someuser,cn=realm,cn=gssapi,cn=auth"