23#ifndef SQL_MFA_INCLUDED 
   24#define SQL_MFA_INCLUDED 
  100    return down_cast<Multi_factor_auth_list *>(
this);
 
  104    return down_cast<Multi_factor_auth_info *>(
this);
 
  134                               const char *h) 
override;
 
  172                               const char *h) 
override;
 
std::list< random_password_info > Userhostpassword_list
Definition: auth_common.h:1135
 
An interface to access information about Multi factor authentication methods.
Definition: sql_mfa.h:45
 
virtual bool finish_registration(THD *, LEX_USER *, uint)=0
 
virtual bool validate_against_authentication_policy(THD *)
Helper method to validate Multi factor authentication methods are correct compared to authentication ...
Definition: sql_mfa.h:62
 
virtual bool validate_plugins_in_auth_chain(THD *thd)=0
Helper method to validate Multi factor authentication methods.
 
virtual bool is_alter_allowed(THD *, LEX_USER *)
Helper methods to verify and update ALTER USER sql when altering Multi factor authentication methods.
Definition: sql_mfa.h:52
 
virtual ~I_multi_factor_auth()=default
 
Multi_factor_auth_info * get_multi_factor_auth_info()
Definition: sql_mfa.h:103
 
virtual void get_generated_passwords(Userhostpassword_list &gp, const char *u, const char *h)=0
Fill in generated passwords from respective Multi factor authentication methods.
 
virtual void alter_mfa(I_multi_factor_auth *)
Definition: sql_mfa.h:53
 
virtual void add_factor(I_multi_factor_auth *m)
Definition: sql_mfa.h:68
 
virtual bool init_registration(THD *, uint)=0
Helper methods to do registration step.
 
virtual bool deserialize(uint f, Json_dom *mfa_dom)=0
 
virtual bool is_passwordless()=0
 
virtual void get_info_for_query_rewrite(THD *, LEX_USER *)=0
Fill needed info in LEX_USER::mfa_list for query rewrite.
 
virtual bool update_user_attributes()=0
method to add/delete Multi factor authentication methods in user_attributes column.
 
virtual bool serialize(Json_array &mfa_arr)=0
Helper methods to convert this interface into a valid JSON object and vice versa.
 
Multi_factor_auth_list * get_multi_factor_auth_list()
Get methods.
Definition: sql_mfa.h:99
 
virtual void get_server_challenge(std::vector< std::string > &sc)=0
Fill in server challenge generated as part of initiate registration step.
 
Represents a JSON array container, i.e.
Definition: json_dom.h:520
 
JSON DOM abstract base class.
Definition: json_dom.h:173
 
Definition: sql_mfa.h:149
 
void set_passwordless(int v)
Definition: sql_mfa.cc:1233
 
bool is_passwordless() override
Definition: sql_mfa.cc:1189
 
bool is_modify_factor()
Definition: sql_mfa.cc:1185
 
bool update_user_attributes() override
Method to update User_attributes column in mysql.user table.
Definition: sql_mfa.cc:707
 
void set_requires_registration(int v)
Definition: sql_mfa.cc:1245
 
void get_info_for_query_rewrite(THD *, LEX_USER *) override
This method will fill in missing details like plugin name or authentication string,...
Definition: sql_mfa.cc:1033
 
void get_server_challenge(std::vector< std::string > &sc) override
This method will return randomly generated server challenge as part of ALTER USER .
Definition: sql_mfa.cc:1107
 
void set_finish_registration(bool v)
Definition: sql_mfa.cc:1241
 
const char * get_auth_str()
Definition: sql_mfa.cc:1142
 
bool get_unregister()
Definition: sql_mfa.cc:1205
 
bool validate_plugins_in_auth_chain(THD *thd) override
This method validates nth factor authentication plugin during ALTER/CREATE USER sql.
Definition: sql_mfa.cc:563
 
void set_init_registration(bool v)
Definition: sql_mfa.cc:1237
 
bool is_identified_with()
Definition: sql_mfa.cc:1134
 
size_t get_auth_str_len()
Definition: sql_mfa.cc:1146
 
std::string get_command_string(enum_sql_command sql_command)
Definition: sql_mfa.cc:1249
 
unsigned int get_nth_factor()
Definition: sql_mfa.cc:1174
 
bool deserialize(uint f, Json_dom *mfa_dom) override
Helper function to read details from Json object representing Multi factor authentication methods and...
Definition: sql_mfa.cc:763
 
Multi_factor_auth_info(MEM_ROOT *mem_root)
Definition: sql_mfa.cc:540
 
bool is_add_factor()
Definition: sql_mfa.cc:1178
 
size_t get_generated_password_len()
Definition: sql_mfa.cc:1154
 
bool get_requires_registration()
Definition: sql_mfa.cc:1201
 
MEM_ROOT * m_mem_root
Definition: sql_mfa.h:151
 
acl_table::Pod_user_what_to_update m_update
Definition: sql_mfa.h:153
 
bool get_finish_registration()
Definition: sql_mfa.cc:1197
 
bool finish_registration(THD *, LEX_USER *, uint) override
This method reads the credential details received from FIDO device and saves in user_attributes colum...
Definition: sql_mfa.cc:915
 
bool validate_row()
Interface method to validate the auth plugin chain if user_attributes in mysql.user table is modified...
Definition: sql_mfa.cc:669
 
const char * get_plugin_str()
Definition: sql_mfa.cc:1158
 
void set_plugin_str(const char *, size_t)
Definition: sql_mfa.cc:1215
 
LEX_CSTRING & plugin_name()
Definition: sql_mfa.cc:1138
 
LEX_MFA * m_multi_factor_auth
Definition: sql_mfa.h:152
 
const char * get_generated_password_str()
Definition: sql_mfa.cc:1150
 
bool get_init_registration()
Definition: sql_mfa.cc:1193
 
void set_auth_str(const char *, size_t)
Definition: sql_mfa.cc:1211
 
size_t get_plugin_str_len()
Definition: sql_mfa.cc:1161
 
~Multi_factor_auth_info() override
Definition: sql_mfa.h:158
 
bool is_identified_by()
Definition: sql_mfa.cc:1131
 
bool init_registration(THD *, uint) override
This method initiates registration step.
Definition: sql_mfa.cc:815
 
nthfactor get_factor()
Definition: sql_mfa.cc:1165
 
bool serialize(Json_array &mfa_arr) override
Helper function to convert an instance of Multi_factor_auth_info into a JSON object.
Definition: sql_mfa.cc:728
 
bool is_drop_factor()
Definition: sql_mfa.cc:1182
 
void set_generated_password(const char *, size_t)
Definition: sql_mfa.cc:1219
 
Multi_factor_auth_info & operator=(Multi_factor_auth_info &new_af)
Definition: sql_mfa.cc:1114
 
LEX_MFA * get_lex_mfa()
Definition: sql_mfa.cc:1209
 
void set_factor(nthfactor f)
Definition: sql_mfa.cc:1224
 
void get_generated_passwords(Userhostpassword_list &gp, const char *u, const char *h) override
This method will return randomly generated passwords as part of IDENTIFIED BY RANDOM PASSWORD clause,...
Definition: sql_mfa.cc:1087
 
Definition: sql_mfa.h:111
 
bool validate_plugins_in_auth_chain(THD *thd) override
Interface method to validate the auth plugin chain before updating the user_attributes in mysql....
Definition: sql_mfa.cc:384
 
void alter_mfa(I_multi_factor_auth *) override
This method modifies the Multi factor authentication interface based on ALTER USER sql.
Definition: sql_mfa.cc:205
 
void add_factor(I_multi_factor_auth *m) override
Definition: sql_mfa.cc:1127
 
bool update_user_attributes() override
Interface method to update user_attributes.
Definition: sql_mfa.cc:398
 
Multi_factor_auth_list(MEM_ROOT *)
Definition: sql_mfa.cc:45
 
void get_info_for_query_rewrite(THD *, LEX_USER *) override
Interface method to fill in Multi factor authentication method details during query rewrite.
Definition: sql_mfa.cc:496
 
bool deserialize(uint f, Json_dom *mfa_dom) override
Interface method to convert a valid JSON object into this interface.
Definition: sql_mfa.cc:433
 
bool is_alter_allowed(THD *, LEX_USER *) override
This method checks MFA methods present in ACL_USER against new factor specified as part of ALTER USER...
Definition: sql_mfa.cc:62
 
bool serialize(Json_array &mfa_arr) override
Interface method to convert this interface into a valid JSON object.
Definition: sql_mfa.cc:416
 
bool is_passwordless() override
Interface method to check if registration step in for passwordless authentication method.
Definition: sql_mfa.cc:481
 
my_vector< I_multi_factor_auth * > m_factor
Definition: sql_mfa.h:114
 
bool validate_against_authentication_policy(THD *thd) override
This method checks the modified Multi factor authentication interface methods based on ALTER USER sql...
Definition: sql_mfa.cc:316
 
void sort_mfa()
Helper method to sort nth factor methods in multi-factor authentication interface such that 2nd facto...
Definition: sql_mfa.cc:363
 
my_vector< I_multi_factor_auth * > & get_mfa_list()
Definition: sql_mfa.cc:534
 
bool init_registration(THD *, uint) override
Interface method to initiate registration.
Definition: sql_mfa.cc:448
 
void get_generated_passwords(Userhostpassword_list &gp, const char *u, const char *h) override
Interface method to fill in generated passwords from Multi factor authentication methods.
Definition: sql_mfa.cc:512
 
void get_server_challenge(std::vector< std::string > &sc) override
Interface method to fill in generated server challenge from init registration step.
Definition: sql_mfa.cc:527
 
size_t get_mfa_list_size()
Definition: sql_mfa.cc:538
 
bool finish_registration(THD *, LEX_USER *, uint) override
Interface method to finish registration step.
Definition: sql_mfa.cc:466
 
~Multi_factor_auth_list() override
Definition: sql_mfa.cc:48
 
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
 
Definition: user_table.h:47
 
static MEM_ROOT mem_root
Definition: client_plugin.cc:110
 
enum_sql_command
Definition: my_sqlcommand.h:46
 
std::vector< T, Mem_root_allocator< T > > my_vector
Definition: sql_mfa.h:109
 
nthfactor
Definition: sql_mfa.h:35
 
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
 
Definition: mysql_lex_string.h:40
 
unsigned int uint
Definition: uca9-dump.cc:75