Spec-Zone .ru
спецификации, руководства, описания, API

22.2.4.10. Запись Плагинов Проверки допустимости пароля

Этот раздел описывает, как записать плагин сервера проверки допустимости пароля. Инструкции основаны на исходном коде в 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);};

У специфичного для типа дескриптора есть эти элементы:

Для 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;