Оформление
Импорт параметров шифрования паролей пользователей
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 {   ; 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.