将ldap_sasl_bind_s与Kerberos凭据文件(/ tmp / krb5cc_id)一起使用时,您对ber值使用了什么?它是文件的名称吗?它是文件的内容吗?
例如(这似乎不起作用):
struct berval cred;
cred.bv_val = "/tmp/kr5cc_id";
cred.bv_len = strlen(cred.bv_val);
ldap_sasl_bind_s(ld, NULL, NULL, &cred, NULL, NULL, NULL);
答案 0 :(得分:0)
cred
参数包含从实现特定SASL机制的层获得的不透明数据。比方说,如果您使用的是GSSAPI SASL机制,那么您应该调用某个库(例如Cyrus SASL)并在其与ldap_sasl_bind()
之间挖掘数据。就ldap_sasl_bind()
而言,数据是不透明的:它只是将其嵌入到它生成的绑定消息中,并从它接收的“正在进行中的绑定”消息中读出。
This answer提供了相当完整的解释。它特定于Microsoft的SSPI(实现GSSAPI
(Kerberos V5),NTLM
,GSS-SPNEGO
和DIGEST-MD5
)。