База знаний

Использование удаленной аутентификации

ID статьи: 379
Последнее обновление: 24 авг., 2022

Удаленная аутентификация позволяет интегрировать систему аутентификации вашей организации с KBPublisher.

Прежде чем начать:

  • У вас должен быть опыт работы с PHP и с системой, к которой вы подключаетесь.

Как включить удаленную аутентификацию​

  • Нажмите Настройки -> Провайдеры аутентификации -> Удаленная аутентификация.
  • Установите флаг Разрешить удаленную аутентификацию (убедитесь, что в файле admin/config.inc.php для параметра $conf['auth_remote'] установлено значение 1).
  • В файле admin/lib/custom/remote_auth.php установите требуемые значения для констант.
  • В файле admin/lib/custom/remote_auth.php настройте функцию _remoteDoAuth на аутентификацию имени пользователя и пароля, переданные ему в зависимости от вашей собственной системы аутентификации.
  • Переименуйте функцию _remoteDoAuth в remoteDoAuth.

Краткое описание процесса

  • Пользователь заходит на сайт.
  • Удаленная аутентификация проверяет действительность учетных данных пользователя.
    • Если настроена автоматическая аутентификация, то процедура выполняется автоматически.
    • Если автоматическая аутентификация не настроена, то пользователь сначала регистрируется.
  • KBPublisher аутентифицирует пользователя.

Настройка функции remoteDoAuth

В папке установке существует директория admin/lib/custom. Внутри этой директории находится файл remote_auth.php, который содержит функцию _remoteDoAuth. Настройте эту функцию на проверку подлинности в зависимости от вашей внутренней системы с использованием имени пользователя и пароля.

Ниже приведен простой пример функции, настроенной на аутентификацию в базе данных MySQL:

function remoteDoAuth($username, $password) {

    $user = false;
    $db = &DBUtil::connect($conf);

    $sql = "SELECT
        id AS 'remote_user_id',
        email, username, first_name, last_name
    FROM your_remote_users_table
    WHERE username = '%s' AND password = '%s'";
    $sql = sprintf($sql, $username, $password);
    $result = $db->Execute($sql) or die(DBUtil::error($sql, true, $db));
    
    // if found
    if($result->RecordCount() == 1) {
        $user = $result->FetchRow();
        $user['password'] = $password; // here you should provide not md5ing password
        
        // assign a priv to user (optional)
        // it is fully up to you how to determine who is authenticated and what priv to assign
        // set to off to not rewrite on login
        $user['priv_id'] = 'off';
        
        // assign a role to user (optional)
        // it is fully up to you how to determine who is authenticated and what role to assign
        // set to off to not rewrite on login
        $user['role_id'] = 1;
    }

    return $user;
}

Другие примеры также можно посмотреть в приложенных файлах.

Отслеживание входов в систему

Вы можете отследить работу вашей удаленной аутентификации, которая фиксируется в журналах (Журнал -> Входы в систему).

Для отладки каждый последний вход регистрируется в файл с именем last_remote_login.log в каталоге кэша KBPublisher (параметр APP_CACHE_DIR в файле admin/config.inc.php).
Например: /home/username/kb_cache/last_remote_login.log

Эта статья была:   Полезна | Не полезна
ID статьи: 379
Последнее обновление: 24 авг., 2022
Ревизия: 7
Доступ: Открытый доступ
Просмотры: 4204
Комментарии: 0