сквозная авторизация drupal в AD

Главные вкладки

Аватар пользователя smk9001 smk9001 11 июля 2011 в 13:58

Добрый день!

Интересует сквозная авторизация drupal 6 в домене AD.
сейчас сайт поднят на drupal 6 и и стоит на ubuntu (ngix + apache2)

подскажите что необходимо использовать для автоматической авторизации пользователей на сайте. а в последующем что бы можно было пользователям на сайте присваивать роли.

Комментарии

Аватар пользователя Hrrr Hrrr 11 июля 2011 в 15:51

У меня сделано вот так, работает только в IE, вставлено в \modules\system\region.tpl.php, drupal 7

if( ! user_is_logged_in() )
{
echo '"здесь должен быть знак меньше"script type="text/javascript" src="http://Имя сайта/script.js""здесь должен быть знак больше""здесь должен быть знак меньше"/script"здесь должен быть знак больше"' ;

$ldap_host = "Имя сервера";
$base_dn = "dc=Имя домена,dc=ru";
$filter = iconv ('CP1251','UTF-8',"(&(objectClass=user)(samaccountname=".@$_COOKIE['portal_user']."))");

$ldap_user ="Имя домена\Имя пользователя для чтения из LDAP";
$ldap_pass = "Пароль пользователя";

$connect = ldap_connect( $ldap_host);
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind($connect, $ldap_user, $ldap_pass);
$justthese = array( "objectguid", "samaccountname", "mail", "sn","givenname" );
$read = ldap_search($connect, $base_dn, $filter, $justthese);
$info = ldap_get_entries($connect, $read);
$zashli = 0;
ldap_close($connect);

if ( $info["count"] > 0 )
{
$zashli = 1;
$ligne = 0;

$MyUserName = $info[$ligne][iconv('UTF-8', 'CP1251',$info[$ligne][0])][0]." ".$info[$ligne][iconv('UTF-8', 'CP1251',$info[$ligne][1])][0];
$MyPassword = iconv('UTF-8', 'CP1251',$info[$ligne][iconv('UTF-8', 'CP1251',$info[$ligne][2])][0]);
$MyEmail = iconv('UTF-8', 'CP1251',$info[$ligne][iconv('UTF-8', 'CP1251',$info[$ligne][4])][0]);

global $user;
$MyPassword = 'c89j4nphf9rhvrevhphv5hpg89rh';
$account = user_load_by_name( $MyUserName );

if (! $account )
{
$details = array(
'name' => $MyUserName,
'pass' => $MyPassword,
'mail' => $MyEmail,
'access' => 0, /* optional, i didnt want user to be able to this this account yet*/
'status' => 1 );
user_save( null, $details);
$account = user_load_by_name( $MyUserName );
$user = $account;
$Count = $Count + 1;

drupal_goto( $_GET['q'] );

}
else
{
$user = $account;
drupal_goto( $_GET['q'] );
}
}
}

+ содержимое script.js

var WshNetwork = new ActiveXObject("WScript.Network");
UserName = WshNetwork.UserName;
document.cookie = "portal_user=" + UserName;

Аватар пользователя AI AI 11 июля 2011 в 16:49

На сколько помню, есть отдельный модуль, который позволяет без особых проблем регистрироваться в ActiveDirectory. А так же видел модуль, который по NTLM вас пустит. Кароче. Поиском могли бы и найти кое-что Wink

Аватар пользователя smk9001 smk9001 1 августа 2011 в 12:47

"Hrrr" wrote:
$MyPassword = 'c89j4nphf9rhvrevhphv5hpg89rh';

я так понимаю вы всем пользователям ставите единый пароль?

И еще такой вопрос куда можно этот скрипт вставить в 6 друпале?