Настройка и тестирование десктопного приложения c Kerberos аутентификацией#

Исходные данные#

Имеется сервер контроллера домена FreeIPA:

  • имя домена astra.aaa

  • администратор домена admin@astra.aaa

  • пользователь домена user-01@astra.aaa

  • имя сервера аdc-01.astra.aaa

  • сервер имеет постоянный IP-адрес, например, 192.168.1.20

Пользовательский компьютер располагается на отдельном компьютере:

  • имя компьютера pc-01.astra.aaa

  • компьютер должен быть введен в домен

  • компьютер имеет постоянный IP-адрес, например, 192.168.1.22

База данных располагается на отдельном сервере:

  • имя сервера dbsrv-01.astra.aaa

  • сервер должен быть введен в домен

  • сервер имеет постоянный IP-адрес, например, 192.168.1.23

  • настроенная для GSS СУБД Postgresql

Настройка компьютера пользователя#

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

Настройка сервера базы данных#

Для настройки сервера базы данных необходимо перейти по ссылке и выполнить действия по инструкции:

Настройка приложения#

Пункт 1#

  • установить пакет драйвера подключения к базе данных libpq-dev:

sudo apt install libpq-dev

Пункт 2#

  • создать в домашней директории пользователя файл postgres_test.cpp и сохранить в него код:

#include <iostream>
#include <postgresql/libpq-fe.h>

int main() {
    const char *conninfo = "host=dbsrv-01.astra.aaa port=5432 dbname=postgres sslmode=require gssencmode=prefer";

    PGconn *conn = PQconnectdb(conninfo);

    if (PQstatus(conn) != CONNECTION_OK) {
        std::cerr << "Ошибка подключения: " << PQerrorMessage(conn) << std::endl;
        PQfinish(conn);
        return 1;
    }

    std::cout << "Подключение успешно установлено!" << std::endl;

    PGresult *res = PQexec(conn, "SELECT version();");
    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
        std::cerr << "Ошибка выполнения запроса: " << PQerrorMessage(conn) << std::endl;
        PQclear(res);
        PQfinish(conn);
        return 1;
    }

    std::cout << "Версия PostgreSQL: " << PQgetvalue(res, 0, 0) << std::endl;

    PQclear(res);
    PQfinish(conn);
    std::cout << "Подключение закрыто." << std::endl;

    return 0;
}
  • собрать приложение:

g++ postgres_test.cpp -o postgres_test -lpq

Тестирование приложения#

Пункт 1#

  • открыть терминал, и из домашней папки пользователя вызвать следующую команду для запуска приложения:

./postgres_test

Пункт 2#

  • проверить результат, он должен иметь вид:

Подключение успешно установлено!
Версия PostgreSQL: 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
Подключение закрыто.