【问题标题】:LDAP CHANGE PASSWORD PHPLDAP 更改密码 PHP
【发布时间】:2018-11-15 15:34:47
【问题描述】:

我想使用 PHP LDAP 在 Windows Active Directory 上更改用户密码 [unicodePwd]。

我正在通过 PHP LDAP 使用 Windows Active Directory。

我对此没有任何问题。

我在收集数据方面没有任何问题。

使用 ldap_mod_replace 或 ldap_modify 更改属性没有任何问题

“unicodePwd”除外。

*注意这是可行的

$user['telephonenumber'] = '1234567890';

*请注意,这不起作用

$user['unicodePwd'] = mb_convert_encoding('my_new_password', "UTF-16LE");

// 代码

$result = ldap_modify($ldap, $dn, $user);
return ldap_error($ldap);

// 代码

// 更改 unicodePwd 时出错

ldap_modify(): Modify: Server is unwilling to perform

// 电话号码没有错误

  • 06/11/2018 问题,

我无法将我的服务器设置为通过 ssl 使用 ldap。 已经尝试安装 AD CS,到目前为止没有任何效果。仍在配置我的服务器关于安装 CA(证书颁发机构)以通过 SSL 在 LDAP 中使用的任何想法?

  • 06/20/2018 问题,新问题

已经设置 LDAP OVER SSL,我也可以使用 ldap 使用

cmd->ldp;端口 389,带 ssl 的 636 也不错。

但是当我使用端口 636 或 ldaps://servername 在我的 php 中运行它时,这是错误,

ldap_bind(): Unable to bind to server: Can't contact LDAP server

【问题讨论】:

  • 您与 LDAP 服务器的连接是否安全,as it must be 以更改密码?
  • 我与 LDAP 的连接不安全。我使用端口 389。

标签: php ssl active-directory ldap ssl-certificate


【解决方案1】:

您需要使用secured connection to modify a password(可能还有其他与安全相关的选项)。

在调用ldap_bind()之前添加以下内容:

ldap_start_tls($ldap);

即使您不尝试更改密码,这也是一个好主意,否则您的绑定操作是明文并且可以被嗅探。


如果您看到此错误:

警告:ldap_start_tls():无法启动 TLS:...中的连接错误

您可以通过在调用ldap_connect之前添加以下行来解决此问题:

putenv('LDAPTLS_REQCERT=never');

警告:这将禁用检查 LDAP 服务器证书的有效性!理想情况下,您应该将服务器证书(或其签名 CA)添加到您的可信存储中。

【讨论】:

  • 感谢您的回复,但我使用 ldap_start_tls($ldap);错误:ldap_start_tls():无法启动 TLS:连接错误这是服务器端问题吗?我应该配置一个 ldaps(ldap over ssl)连接来更改密码吗?我是配置 Windows 服务器的新手,顺便说一下它的 Windows Server 2012 r2。再次感谢伙计。
  • 您应该使用 ldaps-Protocol 绑定到 LDAP-Server,而不是使用 StartTLS。它将加密所有网络流量。如果您使用 StartTLS,加密将在第一次连接后开始。由于 PHP 通常是一个包含密码的绑定,因此在使用 StartTLS 时该密码是未加密发送的。
  • @heiglandreas 据我所知,推荐的保护 LDAP 通信的方法是通过 StartTLS。 OpenLDAP 已经达到了deprecating ldaps:// in favour of StartTLS。您对使用 StartTLS 时以明文形式发送密码的评论不正确。请注意,ldap_start_tls 被称为 之前 ldap_bind
  • 我的立场是正确的!我从这篇 (forum.forgerock.com/2015/04/…) 博文中获得了我的信息。我混淆的是用户需要明确需要调用 starttls,因此可以在调用 ldap_start_tls 之前调用 ldap_bind。因此,我个人更喜欢使用 ldaps 而不是 starttls,因为它可以减少出错的可能性。
  • 我找不到在 OpenLDAP 上不推荐使用 ldaps 的参考。你有一个你会介意分享的吗?因为我正在与维护 PHPs LDAP 扩展的人联系,知道这将是非常有趣的!?
猜你喜欢
  • 1970-01-01
  • 2012-12-10
  • 2020-02-29
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 1970-01-01
相关资源
最近更新 更多