LDAP-авторизация на страницу

GRIG

Новичок
Привет всем. Помогите разобраться - я что-то запутался.
В локальной сети фирмы есть внутренний сервер, на нем есть некая страница. Нужно ограничить доступ на эту страницу, чтобы не все могли ее видеть. Повесить эту заботу на апач нельзя - при доступе надо не только проверять логин и пароль, но и смотреть полномочия вошедшего, и потом формировать страницу в зависимости от этого.
Поскольку таких внутренних серверов и страниц может быть много, было решено применить LDAP для хранения пользователей, паролей и принадлежности к группам. А полномочия на определенную страницу давать по принадлежности пользователя группе.
Я в голове страницы написал следующее ( $ini - массив настроечных параметров, которые я читаю из файла):

if( ! isset( $_SERVER['PHP_AUTH_USER'] ) || ! isset( $_SERVER['PHP_AUTH_PW'] ) )
{
header('WWW-Authenticate: Basic realm="Sirena-Travel::IMS"');
header('HTTP/1.0 401 Unauthorized');
echo 'You cannot use this page without authorisation';
exit;
}

if( ! $ldap_ds = ldap_connect( $ini['Auth']['ldap_server'], $ini['Auth']['ldap_port'] ) )
die( 'Cannot connect to LDAP server' );
if( ! ldap_bind( $ldap_ds, "uid=". $_SERVER['PHP_AUTH_USER'] . ",ou=Users," . $ini['Auth']['ldap_base'],
$_SERVER['PHP_AUTH_PW'] ) )
die( 'wrong username/password' );
ldap_unbind( $ldap_ds );

/* И еще нужно сделать ldap_search(), чтобы определить принадлежность пользователя группе, но это я пока отложил в сторону */

Далее я хотел применить сессии, чтобы не запрашивать логин и пароль при каждом входе на страницу. И на этом я что-то заткнулся. Один раз сервер у меня запросил логин и пароль - и на этом все. Выйти еще раз на запрос логина не получилось. Страница каждый раз выходит так, как будто логин и пароль уже введены.
Чего-то я тут не доделал. А вот чего - не пойму никак.
Помогите кто чем может. Хотя бы советом.
 

GRIG

Новичок
А в какой момент это надо делать?
И каким способом (потому как эти переменные выставляются самим сервером)?
 

Ragazzo

TDD interested
GRIG
в момент логаута это надо убирать
unset($PHP_AUTH_USER);
unset($PHP_AUTH_PW);
и лучше не использовать такую кривую авторизацию, а написать нормальную....
 

prolis

Новичок
PHP:
function authenticate() {
 header();
}
if( ! isset( $_SERVER['PHP_AUTH_USER'] )....) //первый раз на странице
  authenticate();
elseif (isset($_GET['logout'])) //при обращении к script.php?logout
  authenticate();
 

Ragazzo

TDD interested
prolis
и в чем соль?по обоим условиям выполнять одну и ту же функцию...?
 
Сверху