首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ldap_bind(...)在ldp.exe工作时,php提供无效的凭据。

ldap_bind(...)在ldp.exe工作时,php提供无效的凭据。
EN

Stack Overflow用户
提问于 2014-08-19 20:16:12
回答 1查看 823关注 0票数 0

我有严重的问题,找出使用哪些凭证来连接到php中的广告。我可以使用具有泛型函数类型和正确的域、用户和密码的ldp.exe成功连接。在ldp.exe中设置了任何其他选项后,我只能匿名连接。

在php中我没有机会。我对ldap不是很熟悉,所以我在这里有点迷茫。下面是一些php代码:

代码语言:javascript
复制
$ldap_host = "ldap://<dc>:389";
$ldap_user = "<username>";
$ldap_pw = "<pw>";
$ldap_domain = "<full domain>";

$connection = ldap_connect($ldap_host) or die("Could not connect to LDAP server."); 

//$user = $ldap_user;
$user = $ldap_user."@".$ldap_domain;
//$user = $ldap_user;
//$user = "uid=".$ldap_user;
//$user = $ldap_domain."\\".$ldap_user;
//$user = "User=$ldap_user";
//$user = "cn=".$ldap_user;
//$user = "CN=".$ldap_user.",OU=<someOU>,OU=<someOU>,DC=<DC1>,DC=<DC2>";

ldap_bind($connection, $user, $ldap_pw); 

你可以看到我尝试过的一些组合。在ldp.exe中,它只是用户名字段中的$ldap_user和域字段中的$ldap_domain。至少user@domain和domain\user版本应该可以工作。这是一个kerberos域,如果这很重要的话。

我不认为有代码错误。但是如何将ldp.exe的泛型函数类型转换为php呢?

下面是错误消息,以便更容易查找:

代码语言:javascript
复制
Warning: ldap_bind(): Unable to bind to server: Invalid credentials in ...

如果能帮上忙我会很感激的。

编辑:在ldp.exe中,我似乎使用了SSPI方法。到目前为止,我认为泛型选择了它自己的方法。这和ldap_sasl_bind()有关系吗?服务器在连接时指定他能够执行以下操作:

代码语言:javascript
复制
supportedSASLMechanisms: GSSAPI; GSS-SPNEGO; EXTERNAL; DIGEST-MD5; 

而只有GSSAPI (SSPI?)看起来很管用。

EDIT2:以下是成功验证后ldp.exe的其他一些输出:

代码语言:javascript
复制
res = ldap_bind_s(ld, NULL, &NtAuthIdentity, 1158); // v.3
    {NtAuthIdentity: User='<username>'; Pwd= <unavailable>; domain = '<full domain'.}
Authenticated as dn:'<username>'.
EN

回答 1

Stack Overflow用户

发布于 2014-08-19 20:26:32

尝试将端口也指定到变量中

代码语言:javascript
复制
$ldapPort = 389;

我会忽略主机部分,只尝试连接到您的服务器(您将其作为域),检查您的ldap绑定是否工作正常

代码语言:javascript
复制
// Handle login requests
$ds = ldap_connect($ldapServer, $ldapPort);
if (ldap_bind($ds, $user, $password)) {
  // Successful auth
  $_SESSION['lastactivity'] = time();
  $_SESSION['username'] = $user;
  $_SESSION['password'] = $password;
  return $ds;
} else {
  // Auth failed
  header("Location: failpage.php?fail=1"); //bad credentials
  exit;
}

此外,要调用所有属性,请尝试使用http://blog.uta.edu/jthardy/2007/08/08/obtaining-user-information-from-ldap-using-php/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25383206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档