linotp.useridresolver.SQLIdResolver module¶
This module implements the communication and data mapping to SQL servers. The LinOTP server imports this module to use SQL databases as a userstore.
Dependencies: UserIdResolver
- class linotp.useridresolver.SQLIdResolver.IdResolver¶
- Bases: - UserIdResolver- A resolver class for userIds - Attributes¶- managed: means it uses the linotp DB [session] for storing and retrieving user information. - checkMapping()¶
- check the given sql field map against the sql table definition - Returns
 
 - checkPass(uid, password)¶
- checkPass - checks the password for a given uid. - Parameters
- uid (string) – userid to be checked 
- password (string) – user password 
 
 - :return : true in case of success, false if password does not match :rtype : boolean - Todo
- extend to support htpasswd passwords: http://httpd.apache.org/docs/2.2/misc/password_encryptions.html 
 
 - close()¶
- close the db connection - will be called at the end of the request 
 - connect(sqlConnect=None)¶
- create a db connection and preserve session in self.dbObj - Parameters
- sqlConnect – the sql connection string 
 
 - critical_parameters: List[str] = ['Driver', 'Server', 'Port', 'Database', 'User', 'Table']¶
 - crypted_parameters: List[str] = ['Password']¶
 - db_prefix = 'useridresolver.SQLIdResolver.IdResolver'¶
 - classmethod getResolverClassDescriptor()¶
- return the descriptor of the resolver, which is - the class name and - the config description - Returns
- resolver description dict 
- Return type
- dict 
 
 - classmethod getResolverClassType()¶
- provide the resolver type for registration 
 - getResolverDescriptor()¶
- return the descriptor of the resolver, which is - the class name and - the config description - Returns
- resolver description dict 
- Return type
- dict 
 
 - getResolverId()¶
- getResolverId - provide the resolver identifier - Returns
- returns the resolver identifier string or empty string if not exist 
 - :rtype : string 
 - getResolverType()¶
- getResolverType - return the type of the resolver - Returns
- returns the string ‘sqlresolver’ 
- Return type
- string 
 
 - getSearchFields()¶
- return all fields on which a search could be made - Returns
- dictionary of the search fields and their types 
- Return type
- dict 
 
 - getUserId(loginName)¶
- return the userId which mappes to a loginname - Parameters
- loginName (string) – login name of the user 
- Returns
- userid - unique idenitfier for this unser 
- Return type
- string 
 
 - getUserInfo(userId, suppress_password=True)¶
- return all user related information - @param userId: specified user @type userId: string @return: dictionary, containing all user related info @rtype: dict 
 - getUserList(searchDict)¶
- retrieve a list of users - Parameters
- searchDict (dict) – dictionary of the search criteria 
- Returns
- list of user descriptions (as dict) 
 
 - getUsername(userId)¶
- get the loginname from the given userid - Parameters
- userId (string) – userid descriptor 
- Returns
- loginname 
- Return type
- string 
 
 - loadConfig(config, conf='')¶
- loadConfig - load the config for the resolver - Parameters
- config (dict) – configuration for the sqlresolver 
- conf (string) – configuration postfix 
 
 
 - classmethod primary_key_changed(new_params, previous_params)¶
- check if during the parameter update the primary key has changed - Parameters
- new_params – the set of new parameters 
- previous_params – the set of previous parameters 
 
- Returns
- boolean 
 
 - resolver_parameters: Dict[str, Tuple[bool, Optional[Union[str, bool, int]], Callable[[Any], Any]]] = {'Connect': (False, '', <class 'str'>), 'Database': (False, '', <class 'str'>), 'Driver': (False, None, <class 'str'>), 'Encoding': (False, 'utf-8', <class 'str'>), 'Limit': (False, '1000', <class 'int'>), 'Map': (False, '', <class 'str'>), 'Password': (True, '', <function encrypted_data>), 'Port': (False, '', <class 'str'>), 'Server': (False, '', <class 'str'>), 'Table': (False, '', <class 'str'>), 'User': (False, '', <class 'str'>), 'Where': (False, '', <class 'str'>), 'conParams': (False, '', <class 'str'>), 'readonly': (False, False, <function boolean>)}¶
 - classmethod setup(config=None, cache_dir=None)¶
- this setup hook is triggered, when the server starts to serve the first request - Parameters
- config (the linotp config dict) – the linotp config 
 
 - classmethod testconnection(parameters)¶
- This is used to test if the given parameter set will do a successful SQL connection and return the number of found users params are: - Driver 
- Server 
- Port 
- Database 
- User 
- Password 
- Table 
 
 
- linotp.useridresolver.SQLIdResolver.build_simple_connect(driver, user=None, pass_=None, server=None, port=None, db=None, conParams=None)¶
- build from the parameters the sql connect url - Parameters
- driver – the url protocol / prefix 
- user – the database accessing user 
- pass – the password of database accessing user 
- server – the hostname for the server could be empty 
- port – the port on th server host, could be empty 
- db – the database on the server 
- conParams – additional and optional database parameter 
 
 - return the connection string 
- linotp.useridresolver.SQLIdResolver.call_on_connect(dbapi_con, connection_record)¶
- linotp.useridresolver.SQLIdResolver.check_password(password, crypted_password, salt=None)¶
- check the crypted password and the optional salt for various password schemes defining a passlib crypto context - {id}pwdata - LDAP format 
- $id$pwdata - modular crypt format 
- other format like the Atlassian or PHP passwords 
- support db format 
- support for archaic formats like Des 
 - the definitions of the crypto context is made above in the schema lists - the algorithm iterates over the crypto contexts to identify the type of the password and, if salt is provided, tries to verify with or without salt. - Parameters
- password – plaintext password 
- crypted_password – the crypted password 
- salt – optional 
 
- Returns
- boolean 
 
- class linotp.useridresolver.SQLIdResolver.dbObject¶
- Bases: - object- close()¶
 - connect(sqlConnect, db=None, timeout=5)¶
- create a db session with the sqlConnect string or with the flask sqlalchemy db object - Parameters
- sqlConnect – sql url for the connection 
- db – the configured flask-sqlalchemy db object (this overrides the sqlConnect parameter) 
 
 
 - count(table, where='')¶
 - getTable(tableName)¶
 - query(select)¶
 
- linotp.useridresolver.SQLIdResolver.make_connect(driver, user, pass_, server, port, db, conParams='')¶
- create a connect string from separate parts - to build a SQLAlchemy Uri - Parameters
- driver (string) – mysql, postgres, … 
- user (string) – database connection user 
- pass (string) – password of the database user 
- server (string) – servername 
- port (string or int) – database connection port 
- db (string) – database name 
- conParams (string) – additional connection parameters 
 
 
- linotp.useridresolver.SQLIdResolver.testconnection(params)¶
- provide the old interface for backward compatibility