Skip to content

Импорт параметров шифрования паролей пользователей

1. описание проблемы

При входе в систему FineBI требуется аутентификация пользователя. Система проверит введенное имя пользователя и пароль, чтобы обеспечить безопасность системы.

Информация для аутентификации (имя пользователя и пароль для входа) хранится в базе данных (встроенной в FineBI базе данных FineDB или других внешних базах данных), и аутентификация будет пройдена, если пароль, введенный пользователем, совпадает с паролем в базе данных.

Если база данных будет взломана, информация для аутентификации входа в систему будет раскрыта, что представляет угрозу для безопасности системы. Как избежать подобных ситуаций и обеспечить безопасность системы?

2. Решения

Пользователи могут шифровать информацию для входа в FineDB . Это гарантирует, что даже если база данных будет взломана, реальные данные пользователя не будут получены.

Между тем, FineBI предоставляет функцию "Custom Password Encryption" в Import Users , которая может шифровать информацию, вводимую пользователями на странице входа в систему. Если зашифрованная информация для входа совпадает с информацией для входа в библиотеку FineDB, аутентификация будет пройдена. Как показано на следующем рисунке:

Шифрование Введение: Пользовательское шифрование паролей, т.е. настройка класса шифрования паролей.

Шифрование описано в классе и сохранено в папке %BI_Home%\webapps\webroot\WEB-INF\classes.

Для обеспечения безопасности пароля система FineBI выполняет вторичное шифрование SHA256 поверх заданного пользователем алгоритма шифрования.

Сценарий: Пользовательское шифрование можно использовать, если пароль в наборе данных импортированного сервера указан как обычный текст.

Пароль входа: открытый текст столбца пароля в наборе данных импортированного сервера.

Интерфейс шифрования: напишите пользовательский класс шифрования паролей с помощью этого интерфейса, чтобы зашифровать "пароль" или "имя пользователя и пароль", введенные пользователем, с помощью пользовательских правил шифрования. Поддерживаются следующие интерфейсы:

1) для получения шифротекста необходимо зашифровать только пароль: String encode(String originText);// входной параметр - пароль в виде открытого текста, пароль шифруется для получения шифротекста

2) закодируйте имя пользователя и пароль для получения шифротекста: String encode(String originUserName, String originPassword);//вход - имя пользователя и пароль в открытом виде, результат возврата - символ шифротекста

Примечание 1: где String encode(String originUserName, String originPassword); метод шифрования - 2019-01-18 Новый интерфейс, содержит функцию интерфейса 1, рекомендуется использовать этот интерфейс.

Примечание 2: Для использования собственного алгоритма шифрования необходимо наследовать класс AbstractPasswordValidator.

3. Идеи для реализации

3.1 Логика зашифрованной аутентификации

Если пользователю удается успешно войти в систему FineBI после ввода пароля на странице входа. Тогда в ходе процесса выполняется четыре шифрования и одна проверка логина.

Возникает после импорта пользователей:

1) Первое шифрование: после импорта пользователей система шифрует открытый текст в наборе данных сервера.

(2) Второе шифрование: система выполняет шифрование SHA256, зашифрованным объектом является шифротекст, полученный после первого шифрования набора данных сервера , а полученный шифротекст записывается в библиотеку FineDB.

Происходит, когда пользователь входит в систему:

(3) Третье шифрование: выбранный пользователем метод шифрования пароля, объект шифрования для пользователя, чтобы ввести пароль в виде открытого текста.

(4) Четвертое шифрование: система выполняет шифрование SHA256, а зашифрованным объектом является шифротекст, полученный после третьего шифрования.

(5) Проверка логина: сравните шифртекст, полученный после четвертого шифрования, с шифртекстом в библиотеке FineDB, если они совпадают, проверка будет пройдена.

Как показано на рисунке ниже:

3.2 Этапы реализации

1) Настройте класс шифрования паролей, чтобы зашифровать простой пароль A, введенный пользователем на странице входа в систему.

  • Подготовка среды компиляции
  • Запись файлов Java
  • Компиляция файла класса

2) Создайте серверный набор данных для хранения информации о входе пользователя в систему, включая имя пользователя, пароль для входа и так далее.

3) Импортируйте информацию о пользователе в систему FineBI для проверки логина.

  • В качестве источника пользователя используется набор данных сервера, подготовленный на шаге 2.
  • Password выбирает пароль в наборе данных сервера в качестве пользовательского зашифрованного шифротекста.
  • Установите метод шифрования на Custom Encryption, используя класс Password Encryption, подготовленный в шаге 1.

4. Пример шифрования пользовательского пароля

Пример: напишите класс шифрования паролей BASE64 для шифрования "пароля", введенного пользователем, с помощью пользовательских правил шифрования, а затем выполните аутентификацию для успешного входа в систему FineBI.

Примечание: В данной статье приведен лишь простой пример шифрования Base64, для других распространенных методов шифрования в разделе 5 приведены файлы пользовательских классов, которые пользователи могут скачать и использовать в соответствии со своими потребностями.

4.1 Подготовка среды компиляции

Конкретные шаги см. в разделе: компиляция Java-программ

4.2 Запись файлов Java

Определите в компиляторе класс с именем Base64PasswordValidator.java, который расширяет AbstractPasswordValidator.Java Код выглядит следующим образом:

  
  
  
package com.fr.decision.privilege.encrpt;; import com.fr.base.Base64; import com.fr.base.ServerConfig; import com.  
  
.fr.decision.privilege.encrpt.AbstractPasswordValidator; import com.fr.log.FineLoggerFactory; import java.io.  
  
 UnsupportedEncodingException; public class Base64PasswordValidator extends AbstractPasswordValidator { &  
  
 nbsp; public Base64PasswordValidator() { } public  
  
 String encode(String originText) { try { &nbsp ; return Base64.encode(originText.getBytes(ServerConfig.getInstance().  
 getServerCharset()))); } catch (UnsupportedEncodingException var3)&  
 nbsp;{ FineLoggerFactory.getLogger().debug(var3.getMessage(  
  
 )); return "";  
  
} } }

4.3 Компиляция файлов классов

Нажмите, чтобы загрузить и распаковать файл класса: Base64PasswordValidator.zip

1) Создайте файл класса

Скомпилируйте Base64PasswordValidator.java, чтобы создать файл Base64PasswordValidator.class .

2) Импортируйте файл класса

Сохраните скомпилированный файл Base64PasswordValidator.class в папке %BI_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt.

Примечание: Если папка decision/privilege/encrpt не существует в %BI_HOME%\webapps\webroot\WEB-INF\classes\com\fr, вы можете создать новую папку самостоятельно.

4.4 Создание наборов данных сервера

Пароли, подготовленные пользователями в базе данных, дважды шифруются и записываются в библиотеку FineDB для проверки логина. Это гарантирует, что даже если база данных будет взломана, реальные данные пользователя не будут получены.

4.4.1 Подготовка данных

Подготовьте таблицу с информацией о пользователе, в которой пароль в столбце данных пароля находится в открытом виде . Структура таблицы показана на следующем рисунке:

Пример: если пользователь a действительно вводит на странице входа в систему пароль в виде простого текста 123456, то пароль, хранящийся в столбце password, будет равен 123456.

Нажмите, чтобы загрузить Информационный лист пользователя: Импорт пользователей.xlsx

4.4.2 Добавление нового набора данных сервера

С помощью стороннего инструмента, например Navicat, импортируйте вышеуказанную таблицу в базу данных и установите соединение между системой и базой данных. Ниже приведен пример базы данных FRDemo.

1) Администратор входит в систему FineBI, нажимает "Management System > Data Connection > Server Dataset", чтобы создать "SQL Dataset". Как показано на рисунке ниже:

2) Задайте имя набора данных "Импорт пользователей", выберите "FRDemo" для подключения к данным и SQL-запрос:

select * from imported users

4.5 Настройка метода шифрования

Примечание: Если пользователи выбрали другой метод шифрования пароля, они могут изменить класс шифрования в этом разделе 4.5.2. В разделе 5 данного документа представлены часто используемые файлы пользовательских классов шифрования, которые пользователи могут выбрать в соответствии со своими потребностями.

Для повышения безопасности системы в разделе "Импорт пользователей" можно выбрать шифрование паролем.

4.5.1 Импорт пользователей

1) Администратор входит в систему FineBI, нажимает "System Management > Управление пользователями > Все пользователи", нажимает "Импорт пользователей" для настройки информации о пользователях. Как показано на рисунке ниже:

4.5.2 Конфигурация шифрования

(1) Выберите источник пользователей следующим образом: "Импорт пользователей" из набора данных сервера, подготовленного в пункте 4.4.2.

2) Пароль

(3) Метод шифрования: пользовательское шифрование пароля, с использованиемпользовательскогокласса шифрованияBase64PasswordValidator.class, подготовленногов разделе 4.3.

Как показано на рисунке ниже:

Нажмите "OK", и пользователь будет успешно импортирован. Как показано на рисунке ниже:

4.6 Предварительный просмотр эффектов

Пользователь a входит в систему FineBI:

Пароль для пользователя a в наборе данных сервера - 123456. Введите пароль в открытом виде: 123456 на странице входа в систему.

Нажмите кнопку "Войти", чтобы успешно войти в систему FineBI. Как показано на рисунке ниже:

5. часто используемые методы шифрования пользовательских паролей

В этой статье представлен часто используемый файл шифрования паролей, пользователи могут использовать его в соответствии со своими потребностями. Щелкните, чтобы загрузить файл и поместить его в указанную папку, измените пользовательский класс в разделе 4.5.2, а для остальных шагов обратитесь к примеру в разделе 4.

5.1 Шифрование имен пользователей и паролей в формате BASE64

FineBI поддерживает использование шифрования BASE64 для совместного шифрования имени пользователя и пароля, вводимого пользователем.

Теперь предоставьте скомпилированный класс шифрования BASE64, нажмите для загрузки файла: Base64UserPasswordValidator.zip

1) Нажмите кнопку скачать и распакуйте файл класса, сохраните его в папке %BI_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege.

(2) Настройте столбец пароля набора данных сервера как "пароль", система будет "имя пользователя + пароль" зашифрована, и, наконец, в библиотеку FineDB.

Пример: пароль пользователя a равен 123456, тогда столбец паролей в наборе данных сервера должен быть 123456, и система шифрует a123456.

5.2 Зашифрованный пароль SHA256

FineBI поддерживает шифрование введенных пользователем паролей с помощью SHA256-шифрования.

Скомпилированный класс шифрования SHA256 теперь доступен, нажмите, чтобы загрузить файл: SHA256PasswordValidator.zip

Нажмите кнопку скачать и распакуйте файл класса, сохраните его в папке %BI_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt.

5.3 Шифрование имен пользователей и паролей с помощью SHA256

FineBI поддерживает использование шифрования SHA256 для совместного шифрования имени пользователя и пароля, вводимого пользователем.

Теперь предоставьте скомпилированный класс шифрования SHA256, нажмите для загрузки файла: CustomSHA256PasswordValidator.zip

1) Нажмите кнопку скачать и распакуйте файл класса, сохраните его в папке %BI_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege/encrpt.

(2) Настройте столбец пароля набора данных сервера как "пароль", система будет "имя пользователя + пароль" зашифрована, и, наконец, в библиотеку FineDB.

Пример: пароль пользователя a равен 123456, тогда в наборе данных сервера столбец паролей должен быть 123456, а система шифрует a123456.

5.4 Зашифрованные пароли MD5 (32-битные строчные буквы)

FineBI поддерживает шифрование вводимых пользователем паролей с помощью MD5 (32-битный строчный) шифр.

Теперь предоставьте скомпилированный класс шифрования MD5 (32-битный строчный регистр), нажмите для загрузки файла: MD5CasePasswordValidator.zip

Нажмите кнопку скачать и распакуйте файл класса, сохраните его в папке %BI_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege.

5.5 Шифрование имен пользователей и паролей с помощью MD5 (32-битный строчный регистр)

FineBI поддерживает использование шифрования MD5 (32-битный строчный регистр) для совместного шифрования имени пользователя и пароля, вводимого пользователем.

Теперь предоставьте скомпилированный класс шифрования MD5 (32-битный строчный регистр), нажмите для загрузки файла:MD5CaseUserPasswordValidator.zip

1) Нажмите кнопку скачать и распакуйте файл класса, сохраните его в папке %BI_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege.

(2) Настройте столбец пароля набора данных сервера как "пароль", система будет "имя пользователя + пароль" зашифрована, и, наконец, в библиотеку FineDB.

Пример: пароль пользователя a равен 123456, тогда в наборе данных сервера столбец паролей должен быть 123456, а система шифрует a123456.

5.6 Зашифрованные пароли MD5 (32-битный верхний регистр)

FineBI поддерживает шифрование введенных пользователем паролей с помощью MD5 (32-битный верхний регистр) шифрования.

Теперь предоставьте скомпилированный класс шифрования MD5 (32-битный верхний регистр), нажмите для загрузки файла: MD5UpperCasePasswordValidator.zip

Нажмите кнопку скачать и распакуйте файл класса, сохраните его в папке %BI_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege.

5.7 Шифрование имен пользователей и паролей с помощью MD5 (32-битный верхний регистр)

FineBI поддерживает использование шифрования MD5 (32-битный верхний регистр) для совместного шифрования имени пользователя и пароля, вводимого пользователем.

Теперь предоставьте скомпилированный класс шифрования MD5 (32-битный верхний регистр), нажмите для загрузки файла: MD5UpperCaseUserPasswordValidator.zip

1) Нажмите кнопку скачать и распакуйте файл класса, сохраните его в папке %BI_HOME%/webapps/webroot/WEB-INF/classes/com/fr/decision/privilege.

(2) Настройте столбец пароля набора данных сервера как "пароль", система будет "имя пользователя + пароль" зашифрована, и, наконец, в библиотеку FineDB.

Пример: пароль пользователя a равен 123456, тогда столбец паролей в наборе данных сервера должен быть 123456, и система шифрует a123456.