Настройка Kerberos аутентификации в ЕПП, Apache2, PHP-FPM#
Исходные данные#
Имеется сервер контроллера домена FreeIPA:
имя домена astra.aaa
администратор домена admin@astra.aaa
пользователь домена user-01@astra.aaa
имя сервера dc-01.astra.aaa
сервер имеет постоянный IP-адрес, например, 192.168.1.20
Веб-сервер располагается отдельно:
имя сервера websrv-01.astra.aaa
сервер должен быть введен в домен
на сервере установлен и настроен web-сервер Apache2
сервер имеет постоянный IP-адрес, например, 192.168.1.21
Сервер базы данных располагается отдельно:
имя сервера dbsrv-01.astra.aaa
сервер должен быть введен в домен
на сервере должна быть установлена и настроенная СУБД Postgresql
сервер имеет постоянный IP-адрес, например, 192.168.1.23
Пользовательский компьютер располагается на отдельном компьютере:
имя компьютера pc-01.astra.aaa
компьютер должен быть введен в домен
компьютер имеет постоянный IP-адрес, например, 192.168.1.22
Основная концепция, реализация веб-приложения на языке программирования PHP#
Пользователь домена со своего компьютера отправляет запрос c аутентификацией Kerberos, на сервер приложения Apache2. Веб сервер Apache2 производит аутентификацию пользователя, если аутентификация прошла успешно, то запускает PHP-FPM и создает делегируемый Kerberos кэш, если аутентификации прошла неуспешно выдает ошибку. PHP добавляет в окружение переменную KRB5CCNAME и в строку подключения к базе данных имя пользователя взятые из заголовка запроса. Далее коннектор php-pgsql, производит запрос к БД Postgresql. БД производит аутентификацию, если требуется авторизацию, и отдаёт данные пользователю.
Настройка компьютера пользователя#
Для настройки компьютера пользователя необходимо перейти по ссылке и выполнить действия по инструкции:
Настройка сервера базы данных#
Для настройки сервера базы данных необходимо перейти по ссылке и выполнить действия по инструкции:
Установка и настройка веб-сервера Apache2#
Для установки и настройки веб-сервера Apache2 необходимо перейти по ссылке и выполнить действия по инструкции:
Установка веб-приложения#
Для установки и настройки веб-приложения необходимо:
Пункт 1#
установить следующие пакеты пакет:
sudo apt install php-fpm php-pgsql
Пункт 2#
Пункт 3#
создать файл index.php по пути /var/www/public_html:
sudo nano /var/www/public_html/index.php
Пункт 4#
файл index.php должен иметь следующее содержимое:
<?php
putenv("KRB5CCNAME=" . $_SERVER['KRB5CCNAME']);
$host = "dbsrv-01.astra.aaa";
$dbname = "postgres";
$user = $_SERVER['REMOTE_USER'];
$dsn = "pgsql:host=$host;dbname=$dbname;";
try {
$pdo = new PDO($dsn, $user, '');
$stmt = $pdo->query('SELECT version()');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
}
} catch (PDOEXCEPTION $e) {
die ("Error: " . $e->getMessage());
}
?>
Тестирование веб-приложения#
Пункт 1#
запустите предварительно настроенный браузер и вставьте следующую ссылку:
http:\\websrv-01.astra.aaaa
Пункт 2#
возвращённая страница должна содержать ответ:
Array ([version] => PostgreSQL 15.6 (Debian 15.6-astra.se2+b1) on x86_64-pc-linux-gnu, compiled by gcc (Astra 12.2.0-14.astra3+b1) 12.2.0, 64-bit)