PHP Conference Japan 2024

ldap_sasl_bind

(PHP 5, PHP 7, PHP 8)

ldap_sasl_bind使用SASL绑定到LDAP目录

描述

ldap_sasl_bind(
    LDAP\Connection $ldap,
    ?string $dn = null,
    #[\SensitiveParameter] ?string $password = null,
    ?string $mech = null,
    ?string $realm = null,
    ?string $authc_id = null,
    ?string $authz_id = null,
    ?string $props = null
): bool
警告

此函数目前未记录;仅提供其参数列表。

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.1.0 ldap 参数现在需要一个 LDAP\Connection 实例;以前,需要一个有效的 ldap link 资源
8.0.0 dnpasswordmechrealmauthc_idauthz_idprops 现在可以为空。

备注

注意: 需求
ldap_sasl_bind() 需要 SASL 支持 (sasl.h)。确保在配置PHP时使用了 --with-ldap-sasl,否则此函数将未定义。

添加备注

用户贡献的备注 4条备注

mbaynton
10年前
调试绑定失败环境的一个提示:此方法中PHP发出的许多警告都以“PHP Warning: ldap_sasl_bind(): Unable to bind to server: [reason]”开头,其中[reason]可以是各种字符串。这使得它看起来失败源于ldap_sasl_bind,但是所有的[reason]实际上都来自底层的c函数ldap_sasl_interactive_bind_s。除了php之外,许多软件也使用该函数,因此我发现通过搜索网络“ldap_sasl_interactive_bind_s [reason]”可以获得更多故障排除信息。
devel at romanr dot info
12年前
存在一些可重入性错误:你不能在单个进程中多次使用此函数。PHP进程(apache或fastcgi)应该重新启动。考虑使用PHP_FCGI_MAX_REQUESTS=1
dwhite at olp dot net
17年前
使用下面错误(已包含在CVS中)中引入的补丁,此函数的参数应为

bool ldap_sasl_bind ( resource $link [, string $binddn [, string $password [, string $sasl_mech [, string $sasl_realm [, string $sasl_authc_id [, string $sasl_authz_id [, string $props]]]]]]] )

一些示例调用

$r=ldap_sasl_bind ( $ds, NULL, 'mysecret', 'DIGEST-MD5', NULL, 'jimmy');

使用authz_id,指定dn
$r=ldap_sasl_bind ( $ds, NULL, 'mysecret', 'DIGEST-MD5', NULL, 'jimmy', 'dn:uid=tommy,ou=people,dc=example,dc=com');

使用authz_id,指定SASL用户名
$r=ldap_sasl_bind ( $ds, NULL, 'mysecret', 'DIGEST-MD5', NULL, 'jimmy', 'u:tommy');

此外,由于SASL身份验证是在LDAP版本3中引入的,
您可能需要使用以下命令显式设置版本号:
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
dahgdevash at gmail dot com
17年前
错误,函数参数错误地发送到服务器
查看
http://bugs.php.net/bug.php?id=39291
To Top