Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел описывает, как записать плагин сервера проверки допустимости пароля. Инструкции основаны на исходном
коде в plugin/password_validation
каталог исходных дистрибутивов MySQL. validate_password.cc
исходный файл в том каталоге реализует названный плагин
validate_password
.
Чтобы записать плагин проверки допустимости пароля, включайте следующий заголовочный файл в сменный исходный файл. Другой MySQL или общие заголовочные файлы могли бы также быть необходимы.
#include <mysql/plugin_validate_password.h>
plugin_validate_password.h
включает plugin.h
, таким
образом, Вы не должны включать последний файл явно. plugin.h
определяет MYSQL_VALIDATE_PASSWORD_PLUGIN
тип плагина сервера и структуры данных должны были
объявить плагин. plugin_validate_password.h
определяет структуры данных,
определенные для плагинов проверки допустимости пароля.
У плагина проверки допустимости пароля, как любой плагин сервера MySQL, есть общий сменный дескриптор (см. Раздел 22.2.4.2.1, "Библиотека Плагина
сервера и Сменные Дескрипторы"). В validate_password.cc
, общий дескриптор
похож на это:
mysql_declare_plugin(validate_password){ MYSQL_VALIDATE_PASSWORD_PLUGIN, /* type */ &validate_password_descriptor, /* descriptor */ "validate_password", /* name */ "Oracle Corporation", /* author */ "check password strength", /* description */ PLUGIN_LICENSE_GPL, validate_password_init, /* init function (when loaded) */ validate_password_deinit, /* deinit function (when unloaded) */ 0x0100, /* version */ NULL, validate_password_system_variables, /* system variables */ NULL, 0,}mysql_declare_plugin_end;
name
элемент (validate_password
) указывает на имя,
чтобы использовать для ссылок на плагин в операторах такой как INSTALL PLUGIN
или UNINSTALL PLUGIN
. Это - также имя, выведенное на экран INFORMATION_SCHEMA.PLUGINS
или SHOW PLUGINS
.
Общий дескриптор также обращается к validate_password_system_variables
, структура,
которая представляет несколько системных переменных SHOW VARIABLES
оператор:
static struct st_mysql_sys_var* validate_password_system_variables[]= { MYSQL_SYSVAR(length), MYSQL_SYSVAR(number_count), MYSQL_SYSVAR(mixed_case_count), MYSQL_SYSVAR(special_char_count), MYSQL_SYSVAR(policy), MYSQL_SYSVAR(dictionary_file), NULL};
validate_password_init
функция инициализации читает файл словаря, если Вы были
определены, и validate_password_deinit
функция освобождает структуры данных,
связанные с файлом.
validate_password_descriptor
значение в общем дескрипторе указывает на специфичный
для типа дескриптор. Для плагинов проверки допустимости пароля у этого дескриптора есть следующая структура:
struct st_mysql_validate_password{ int interface_version; /* This function returns TRUE for passwords which satisfy the password policy (as chosen by plugin variable) and FALSE for all other password */ int (*validate_password)(mysql_string_handle password); /* This function returns the password strength (0-100) depending upon the policies */ int (*get_password_strength)(mysql_string_handle password);};
У специфичного для типа дескриптора есть эти элементы:
interface_version
: Условно, специфичные для типа
сменные дескрипторы начинаются с версии интерфейса для данного сменного типа. Проверки сервера interface_version
когда это загружает плагин, чтобы видеть, является ли
плагин совместимым с этим. Для плагинов проверки допустимости пароля, значения interface_version
элемент MYSQL_VALIDATE_PASSWORD_INTERFACE_VERSION
(определенный в plugin_validate_password.h
).
validate_password
: Функция, которую сервер вызывает,
чтобы протестировать, удовлетворяет ли пароль текущую политику паролей. Это возвращается 1, если пароль
хорошо и 0 иначе. Параметром является пароль, который передают как a mysql_string_handle
значение. Этот тип данных реализуется mysql_string
серверная служба. Для
получения дополнительной информации см. string_service.h
и string_service.cc
исходные файлы в sql
каталог.
get_password_strength
: Функция, которую сервер
вызывает, чтобы оценить силу пароля. Это возвращает значение от 0 (слабый) к 100 (strong). Параметром
является пароль, который передают как a mysql_string_handle
значение.
Для validate_password
плагин, специфичный для типа дескриптор похож на это:
static struct st_mysql_validate_password validate_password_descriptor={ MYSQL_VALIDATE_PASSWORD_INTERFACE_VERSION, validate_password, /* validate function */ get_password_strength /* validate strength function */};
Чтобы скомпилировать и установить сменный объектный файл библиотеки, используйте инструкции в Разделе
22.2.4.3, "Компилируя и Устанавливая Сменные Библиотеки". Чтобы использовать файл библиотеки, это
должно быть установлено в сменном каталоге (каталог, названный plugin_dir
системная переменная). Для validate_password
плагин, это компилируется и устанавливается, когда Вы создаете
MySQL из источника. Это также включается в двоичные дистрибутивы. Процесс сборки производит совместно
используемую библиотеку объектов с именем validate_password.so
(расширение могло
бы быть отличаться в зависимости от Вашей платформы).
Чтобы зарегистрировать плагин во времени выполнения, используйте этот оператор (измените расширение по мере необходимости):
mysql> INSTALL PLUGIN validate_password SONAME
'validate_password.so';
Для дополнительной информации о сменной загрузке см. Раздел 5.1.8.1, "Устанавливая и Удаляя Плагины".
Чтобы проверить сменную установку, исследуйте INFORMATION_SCHEMA.PLUGINS
таблица или использование SHOW PLUGINS
оператор.
В то время как validate_password
плагин устанавливается, он представляет системные
переменные, которые указывают на проверяющие пароль параметры:
mysql> SHOW VARIABLES LIKE
'validate_password%';
+--------------------------------------+--------+| Variable_name | Value |+--------------------------------------+--------+| validate_password_dictionary_file | || validate_password_length | 8 || validate_password_mixed_case_count | 1 || validate_password_number_count | 1 || validate_password_policy | MEDIUM || validate_password_special_char_count | 1 |+--------------------------------------+--------+
Для описаний этих переменных см. Раздел 6.1.2.6.2, "Опции Плагина Проверки допустимости пароля и Переменные".
Чтобы отключить плагин после тестирования этого, используйте этот оператор, чтобы разгрузить это:
mysql> UNINSTALL PLUGIN
validate_password;