Adldap2 身份验证始终 returns true - Yii2
Adldap2 authentication always returns true - Yii2
我在 Yii2 中工作,这里有 Adldap 扩展:https://github.com/Adldap2/Adldap2
当我尝试在我的 ldap 服务器上验证用户时,我 运行 遇到了问题。我可以成功建立连接并检索用户数据,但是当尝试验证用户的用户名和密码是否正确时,它总是 returns 正确,即使信用是错误的。下面是我的代码片段(当然没有显示配置数组):
$ad->addProvider($config);
try {
// If a successful connection is made to your server, the provider will be returned.
$provider = $ad->connect();
//User below does return the correct information from the ldap server
$user = $provider->search()->users()->find('quillin');
try{
$provider->auth()->attempt("wrongUsername","wrongPassword");
die("WIN");
}catch( Exception $e ){
die("Exception " . $e);
}
}catch (\Adldap\Auth\BindException $e) {
die( "There was an issue binding / connecting to the server. <br />" . $e);
}
无论我在用户名和密码字段中输入什么,它总是 returns 正确并命中骰子("WIN");线。在我的 composer.json 文件中,我使用 "adldap2/adldap2":"v7.0.*"
我还尝试使用以下方法绑定用户:
try{
$provider->auth()->attempt("wrongUsername","wrongPassword", $bindAsUser = true);
die("WIN");
}catch( Exception $e ){
die("lose :(");
die("Exception " . $e);
}
而且这也总是 returns 正确;
我解决了这个问题,如果其他人有同样的问题,我会在这里解释。
1) $provider->auth()->attempt() 应该包含在 IF 中,而不是 try/catch。
2) 第一个参数 $username 实际上是在寻找 userprincipalname,文档让它听起来像是在寻找用户名。
之后,我能够成功验证用户。
我在 Yii2 中工作,这里有 Adldap 扩展:https://github.com/Adldap2/Adldap2
当我尝试在我的 ldap 服务器上验证用户时,我 运行 遇到了问题。我可以成功建立连接并检索用户数据,但是当尝试验证用户的用户名和密码是否正确时,它总是 returns 正确,即使信用是错误的。下面是我的代码片段(当然没有显示配置数组):
$ad->addProvider($config);
try {
// If a successful connection is made to your server, the provider will be returned.
$provider = $ad->connect();
//User below does return the correct information from the ldap server
$user = $provider->search()->users()->find('quillin');
try{
$provider->auth()->attempt("wrongUsername","wrongPassword");
die("WIN");
}catch( Exception $e ){
die("Exception " . $e);
}
}catch (\Adldap\Auth\BindException $e) {
die( "There was an issue binding / connecting to the server. <br />" . $e);
}
无论我在用户名和密码字段中输入什么,它总是 returns 正确并命中骰子("WIN");线。在我的 composer.json 文件中,我使用 "adldap2/adldap2":"v7.0.*"
我还尝试使用以下方法绑定用户:
try{
$provider->auth()->attempt("wrongUsername","wrongPassword", $bindAsUser = true);
die("WIN");
}catch( Exception $e ){
die("lose :(");
die("Exception " . $e);
}
而且这也总是 returns 正确;
我解决了这个问题,如果其他人有同样的问题,我会在这里解释。
1) $provider->auth()->attempt() 应该包含在 IF 中,而不是 try/catch。 2) 第一个参数 $username 实际上是在寻找 userprincipalname,文档让它听起来像是在寻找用户名。
之后,我能够成功验证用户。