Приложение Codeigniter с аутентификацией LDAP

Без codeigniter я могу использовать ldap_connect (), но в проекте codeigniter я хочу использовать соединение ldap для аутентификации пользователя с его именем пользователя и паролем Windows. Ниже приведен код, который отлично работает без codeigniter.

/******LDAP CONNECTIVITY STARTS HERE*********/
$ldaprdn = $_POST['uname']; // ldap rdn or dn
$ldappass = $_POST['upass']; // associated password
$ldaprdn = $_POST['uname'].'@domain.com';
$ldapconn = ldap_connect("ip") or die("Could not connect to LDAP server."); //our ip
if ($ldapconn) {
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
// verify binding
if ($ldapbind) {
//echo "<pre>";
//print_r($row_login);
//exit;

$_SESSION['appusername']=$_POST['uname'];
$_SESSION['emp_code']=$row_login['emp_code'];
$_SESSION['emp_id']=$row_login['emp_id'];
$_SESSION['emp_name']=$row_login['emp_name'];
$_SESSION['emp_email']=$row_login['emp_email'];
$_SESSION['emp_dept_id']=$row_login['emp_dept_id'];
$_SESSION['emp_dept_name']=$row_login['dept_name'];
$_SESSION['emp_group']=$row_login['emp_group'];
$_SESSION['emp_category']=$row_login['emp_category'];

$_SESSION['finance_app_authority']=$row_login['finance_approval_status'];
$_SESSION['line_eng_status']=$row_login['line_eng_status'];

$_SESSION['line_name']=$row_login['line_name'];
$_SESSION['dept_name']=$row_login['dept_name'];

if($row_login['emp_mod_status']=='Y'){ //if moderator means
$_SESSION['userType']='MOD';
}
else if($row_login['emp_id']==$row_login['dept_hod_id']){ //if HOD means
$_SESSION['userType']='HOD';
}else{ //if normal user means
$_SESSION['userType']='EMP';
}
echo '<script language="javascript">document.location.href="?p=main&m=it-home"</script>';
exit;

}
else{
echo '<div  class="man_style" style="width:50%;padding:10px 10px 10px 250px !important;text-align:center;color:red;">Invalid password.</div>';
}
}

Все, что я хочу — это аутентифицировать пользователя по имени пользователя и паролю в windows codeigniter. Предложите мне очень простой способ, пожалуйста.

Я пробовал библиотеку Auth_Ldap, но все равно получаю ошибку

Функциональность LDAP отсутствует. Либо загрузите модуль ldap php module, либо используйте php с поддержкой ldap, скомпилированной в.

Я использовал файл библиотеки Auth_Ldap. следующий файл конфигурации
Не знаю, где дать IP-адрес моего хоста

$config['account_suffix']       = '@abcd.com';
$config['base_dn']              = 'DC=domain,DC=local';
$config['domain_controllers']   = array ("server1.domain.local");
$config['ad_username']          = 'administrator';
$config['ad_password']          = 'password';
$config['real_primarygroup']    = true;
$config['use_ssl']              = false;
$config['use_tls']              = false;
$config['recursive_groups']     = true;/* End of file adldap.php */
/* Location: ./system/application/config/adldap.php */

Ваша помощь ценится

1

Решение

Я не нашел библиотеку, которую вы хотите использовать (Auth_Ldap), но я нашел Auth_Ldap. Ваши конфигурационные файлы отличаются, однако. Я скачал файл, и в этом конфиге вы явно получили ldap_uri, так что я думаю, что именно там идет IP-адрес вашего хоста.

$config['ldap_uri'] = array('ldap://ldap.mycompany.com:389/');
// $config ['ldap_uri'] = array('ldaps://ldap.mycompany.com:636/');  <-- connect via SSL
$config['use_tls'] = true; // Encrypted without using SSL
$config['search_base'] = 'dc=mycompany,dc=com';
$config['user_search_base'] = array('ou=people,dc=mycompany,dc=com');  // Leave empty to use $config['search_base']
$config['group_search_base'] = array('ou=group,dc=mycompany,dc=com');  // Leave empty to use $config['search_base']
$config['user_object_class'] = 'posixAccount';
$config['group_object_class'] = 'posixGroup';
$config['user_search_filter'] = '';  // Additional search filters to use for user lookups
$config['group_search_filter'] = ''; // Additional search filters to use for group lookups
$config['login_attribute'] = 'uid';
$config['schema_type'] = 'rfc2307'; // Use rfc2307, rfc2307bis, or ad
$config['proxy_user'] = '';
$config['proxy_pass'] = '';
$config['roles'] = array(1 => 'User',
3 => 'Power User',
5 => 'Administrator');
$config['auditlog'] = 'application/logs/audit.log';  // Some place to log attempted logins (separate from message log)

Если ничего не помогает, и вы можете написать свою собственную библиотеку, это тоже может быть идеей.

Обновить:
Я только что заметил, что библиотека не работает в функции _init ():

private function _init() {
// Verify that the LDAP extension has been loaded/built-in
// No sense continuing if we can't
if (! function_exists('ldap_connect')) {
show_error('LDAP functionality not present.  Either load the module ldap php module or use a php with ldap support compiled in.');
log_message('error', 'LDAP functionality not present in php.');
}

Я на самом деле не знаю, почему это не сработает, если функция очистки существует (и работает), как вы заявили ранее.

1

Другие решения

Привет,

Даже если этому вопросу больше года (и вы, вероятно, уже нашли ответ), я постараюсь дать несколько советов, поскольку это может помочь кому-то еще.

Вы видите ошибку, потому что библиотека php_ldap не включена в вашем файле php.ini. Итак, попробуйте найти в php.ini строку «; extension = php_ldap.dll» и раскомментируйте ее, удалив «;» сформировать начало.

Замечания:
Если вы используете XAMPP (для Windows), то после перезапуска PHP, вероятно, будет жаловаться на отсутствие некоторых dll.
Чтобы решить эту проблему, вы должны скопировать следующие файлы dll из вашей папки php в apache / bin:

  • libsasl.dll
  • libeay32.dll
  • ssleay32.dll (необязательно; для SSL)
0

По вопросам рекламы [email protected]