Php Zend_Auth和SME LDAP的身份验证失败
我正在尝试将Zend应用程序连接到运行LDAP和SQL后端的SME服务器 在每次请求中,我都会收到Php Zend_Auth和SME LDAP的身份验证失败,php,authentication,zend-framework,ldap,zend-auth,Php,Authentication,Zend Framework,Ldap,Zend Auth,我正在尝试将Zend应用程序连接到运行LDAP和SQL后端的SME服务器 在每次请求中,我都会收到err=49,这表示身份验证失败,但我尝试的用户名/密码组合是正确的 My Zend应用程序的配置设置为: ldap.server1.host = primary.example.info ldap.server1.accountDomainName = example.info ldap.server1.accountDomainNameShort =
err=49
,这表示身份验证失败,但我尝试的用户名/密码组合是正确的
My Zend应用程序的配置设置为:
ldap.server1.host = primary.example.info
ldap.server1.accountDomainName = example.info
ldap.server1.accountDomainNameShort = example
ldap.server1.accountCanonicalForm = 2
ldap.server1.username = "CN=admin,DC=example,DC=info"
ldap.server1.password = "password"
ldap.server1.baseDn = "DC=example,DC=info"
ldap.server1.bindRequiresDn = true
我正在尝试使用以下格式登录:
用户名:Alice密码:密码 在我的AuthController中,我用来尝试对LDAP进行身份验证的函数:
protected function _process($values) {
$auth = Zend_Auth::getInstance();
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', 'production');
$options = $config->ldap->toArray();
$adapter = new Zend_Auth_Adapter_Ldap($options, $values['username'], $values['password']);
$result = $auth->authenticate($adapter);
if ($result->isValid()) {
$user = $adapter::getAccountObject();
$auth->getStorage()->write($user);
return true;
}
return false;
}
我在/var/log/messages
中遇到的错误:
Mar 27 02:35:44 primary slapd[4589]: conn=1 fd=7 ACCEPT from IP=142.25.97.141:51711 (IP=0.0.0.0:389)
Mar 27 02:35:44 primary slapd[4589]: conn=1 op=0 BIND dn="cn=admin,dc=kjenkins,dc=info" method=128
Mar 27 02:35:44 primary slapd[4589]: conn=1 op=0 RESULT tag=97 err=49 text=
Mar 27 02:35:44 primary slapd[4589]: conn=1 op=1 UNBIND
Mar 27 02:35:44 primary slapd[4589]: conn=1 fd=7 closed
我知道我使用的凭据是正确的,我也尝试过使用accountCanonicalForm
的所有变体,但似乎都不起作用
有人能找到我做错了什么吗?结果代码decimal
49
表明提供的凭据不正确(在某些情况下)
出于安全原因,当中不存在条目时,可以返回此结果代码
误导攻击者的命令)。应用程序编码人员应验证绑定是否可识别
通过使用已知的正确工具(例如)进行身份验证,name具有正确的凭据
ldapsearch
。例如,尝试:
ldapsearch -h hostname -p port -D cn=admin,dc=kjenkins,dc=info -w password -b '' -s base '(&)'
上述搜索建立连接,将连接的授权状态更改为auth IDcn=admin,dc=kjenkins,dc=info
使用给定的凭据,然后从根DSE检索属性。如果此搜索成功,则
应用程序编码人员可以确保凭据是正确的
另见