为傻瓜安全连接到 ldap
Connecting to ldap securely for Dummies
我已经苦苦挣扎了好几天没有任何进展,首先我对 LDAP 和 Active Directory 知之甚少。我需要使用 php 通过企业连接到 ldap 服务器,然后简单地 运行 绑定。
我在网上浏览了很多 material,但 none 似乎以明确的方式回答了我的问题。此外,据说我收到的错误消息有很多原因,因此更难定位。
这是我当前的代码
putenv('LDAPTLS_REQCERT=allow');
$ldaprdn = 'user'; // ldap rdn or dn
$ldappass = 'password';
$ldapconn = ldap_connect("ldaps:\localhost")
or die("failed");
if (ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3)) {
echo "Using LDAPv3\n";
} else {
echo "Failed to set protocol version to 3"; }
if ($ldapconn) {
//ldap_bind() will fail without ldap_start_tls()
if (ldap_start_tls($ldapconn)) {
echo "LDAP TLS Started";
}
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
if ($ldapbind) {
echo "LDAP bind OK";
} else {
echo "LDAP bind FAIL";
}
}
这输出 "failed",
但如果我改变
$ldapconn = ldap_connect("ldaps:\localhost")
//to
$ldapconn = ldap_connect("localhost")
这是输出
Using LDAPv3
Warning: ldap_start_tls(): Unable to start TLS: Can't contact LDAP server
in C:\xampp\htdocs\OOP_curater\index.php on line 18
Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP
server in C:\xampp\htdocs\OOP_curater\index.php on line 22
LDAP bind FAIL
项目的一些信息
- 它将托管在企业级别的内部网络上
- 所有用户都应该只能从这个内部网络访问它
- 目前 运行正在 PHP XAMPP、
测试我
- 生产将使用带有 IIS
的 windows 服务器
以下是我想弄清楚的一些事情
- 如何确定是否需要在 "ldap" 或 "ldaps"
上连接 Active Directory
- "username" 一定要 "username" 吗?或 "domain/username"
- 我读了很多关于必须重新编译 php 与开放 ldaps 以及 ldaps 的 ssl,因为这是一个 xxamp 堆栈,是否有可能,如果是如何,如果不是,有哪些替代方案
- 在这种情况下如何使用 ldap_connect(),是否需要:
- ldap_connect("localhost");
- ldap_connect("ldap(s)://localhost");
- ldap_connect("ad.orgsitedomain.com");
- 是否有任何我需要从 Active Directory 团队获取的信息,如果是,那是什么。
如果您需要更多信息,请告诉我。谢谢
我已经解决了这个问题,因为没有回复这是我如何处理的。
首先也是最重要的是,如果您是 Active Directory 的新手,请在阅读任何 material 下载 Active Directory Explorer 之前。在研究您的解决方案时,您将对 Active Directory 的各个方面有更多的了解。
如何确定是否需要在 "ldap" 或 "ldaps"
上连接 Active Directory
我真的不知道,刚试过 ldaps 和 ldap 似乎都可以工作
"username" 一定要 "username" 吗?或 "domain/username"
必须是"Domain/Username"
我读了很多关于必须重新编译 php 与开放的 ldaps 以及 ldaps 的 ssl,因为这是一个 xxamp 堆栈,是否有可能,如果是如何,如果没有, 有哪些选择
又一次我没有必要这样做,所以真的还是不知道
在这种情况下如何使用 ldap_connect()
在我的情况下至少必须是 ldap://DOMAIN
因此,我真正需要的唯一东西就是 Active Directory Explorer,其余的都是小菜一碟。有点想知道为什么我遇到的所有 tuts 都没有提到这一点
我已经苦苦挣扎了好几天没有任何进展,首先我对 LDAP 和 Active Directory 知之甚少。我需要使用 php 通过企业连接到 ldap 服务器,然后简单地 运行 绑定。
我在网上浏览了很多 material,但 none 似乎以明确的方式回答了我的问题。此外,据说我收到的错误消息有很多原因,因此更难定位。
这是我当前的代码
putenv('LDAPTLS_REQCERT=allow');
$ldaprdn = 'user'; // ldap rdn or dn
$ldappass = 'password';
$ldapconn = ldap_connect("ldaps:\localhost")
or die("failed");
if (ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3)) {
echo "Using LDAPv3\n";
} else {
echo "Failed to set protocol version to 3"; }
if ($ldapconn) {
//ldap_bind() will fail without ldap_start_tls()
if (ldap_start_tls($ldapconn)) {
echo "LDAP TLS Started";
}
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
if ($ldapbind) {
echo "LDAP bind OK";
} else {
echo "LDAP bind FAIL";
}
}
这输出 "failed",
但如果我改变
$ldapconn = ldap_connect("ldaps:\localhost")
//to
$ldapconn = ldap_connect("localhost")
这是输出
Using LDAPv3
Warning: ldap_start_tls(): Unable to start TLS: Can't contact LDAP server
in C:\xampp\htdocs\OOP_curater\index.php on line 18
Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP
server in C:\xampp\htdocs\OOP_curater\index.php on line 22
LDAP bind FAIL
项目的一些信息
- 它将托管在企业级别的内部网络上
- 所有用户都应该只能从这个内部网络访问它
- 目前 运行正在 PHP XAMPP、 测试我
- 生产将使用带有 IIS 的 windows 服务器
以下是我想弄清楚的一些事情
- 如何确定是否需要在 "ldap" 或 "ldaps" 上连接 Active Directory
- "username" 一定要 "username" 吗?或 "domain/username"
- 我读了很多关于必须重新编译 php 与开放 ldaps 以及 ldaps 的 ssl,因为这是一个 xxamp 堆栈,是否有可能,如果是如何,如果不是,有哪些替代方案
- 在这种情况下如何使用 ldap_connect(),是否需要:
- ldap_connect("localhost");
- ldap_connect("ldap(s)://localhost");
- ldap_connect("ad.orgsitedomain.com");
- 是否有任何我需要从 Active Directory 团队获取的信息,如果是,那是什么。
如果您需要更多信息,请告诉我。谢谢
我已经解决了这个问题,因为没有回复这是我如何处理的。
首先也是最重要的是,如果您是 Active Directory 的新手,请在阅读任何 material 下载 Active Directory Explorer 之前。在研究您的解决方案时,您将对 Active Directory 的各个方面有更多的了解。
如何确定是否需要在 "ldap" 或 "ldaps"
上连接 Active Directory我真的不知道,刚试过 ldaps 和 ldap 似乎都可以工作
"username" 一定要 "username" 吗?或 "domain/username"
必须是"Domain/Username"
我读了很多关于必须重新编译 php 与开放的 ldaps 以及 ldaps 的 ssl,因为这是一个 xxamp 堆栈,是否有可能,如果是如何,如果没有, 有哪些选择
又一次我没有必要这样做,所以真的还是不知道
在这种情况下如何使用 ldap_connect()
在我的情况下至少必须是 ldap://DOMAIN
因此,我真正需要的唯一东西就是 Active Directory Explorer,其余的都是小菜一碟。有点想知道为什么我遇到的所有 tuts 都没有提到这一点