Skip to content
Snippets Groups Projects
  • Vladimir Davydov's avatar
    b5754d3f
    box: make auth subsystem pluggable · b5754d3f
    Vladimir Davydov authored
    This commit introduces an abstraction for the authentication code so
    that one can easily add new methods. To add a new method, one just needs
    to define a set of authentication callbacks in a struct auth_method and
    register it with auth_method_register.
    
    The IPROTO_AUTH and _user.auth formats were initially designed with
    extensibility in mind: both take the authentication method name
    (currently, only 'chap-sha1' is supported) so no changes to the schema
    are required.
    
    Note that although 'chap-sha1' is now implemented in its own file
    src/box/auth_chap_sha1.c, we don't merge src/scramble.c into it.
    This will be done later, in the scope of #7987.
    
    Since we call authentication plug-ins "methods" (not "mechanisms"),
    let's rename BOX_USER_FIELD_AUTH_MECH_LIST to BOX_USER_FIELD_AUTH while
    we are at it. Anyway, the corresponding field of the _user system space
    is called 'auth' (not 'auth_mech_list').
    
    Closes #7986
    
    NO_DOC=refactoring
    NO_TEST=refactoring
    NO_CHANGELOG=refactoring
    b5754d3f
    History
    box: make auth subsystem pluggable
    Vladimir Davydov authored
    This commit introduces an abstraction for the authentication code so
    that one can easily add new methods. To add a new method, one just needs
    to define a set of authentication callbacks in a struct auth_method and
    register it with auth_method_register.
    
    The IPROTO_AUTH and _user.auth formats were initially designed with
    extensibility in mind: both take the authentication method name
    (currently, only 'chap-sha1' is supported) so no changes to the schema
    are required.
    
    Note that although 'chap-sha1' is now implemented in its own file
    src/box/auth_chap_sha1.c, we don't merge src/scramble.c into it.
    This will be done later, in the scope of #7987.
    
    Since we call authentication plug-ins "methods" (not "mechanisms"),
    let's rename BOX_USER_FIELD_AUTH_MECH_LIST to BOX_USER_FIELD_AUTH while
    we are at it. Anyway, the corresponding field of the _user system space
    is called 'auth' (not 'auth_mech_list').
    
    Closes #7986
    
    NO_DOC=refactoring
    NO_TEST=refactoring
    NO_CHANGELOG=refactoring