linotp.useridresolver.PasswdIdResolver module

This module implements the communication interface

for resolving user info to the /etc/passwd user base

PasswdIdResolver.IdResolver class

implements the UserIdResolver for local /etc/passwd lookup

Remarks:

Don’t use this as an enterprise solution!

class linotp.useridresolver.PasswdIdResolver.IdResolver

Bases: UserIdResolver

checkDescription(line, pattern)
checkEmail(line, pattern)
checkPass(uid, password)

This function checks the password for a given uid. - returns true in case of success - false if password does not match

We do not support shadow passwords at the moment. so the seconds column of the passwd file needs to contain the crypted password

checkUserId(line, pattern)

check for the userId

checkUserName(line, pattern)

check for user name

close()

request hook - to close down resolver object

db_prefix = 'useridresolver.PasswdIdResolver.IdResolver'
fields = {'description': 0, 'email': 0, 'gender': 0, 'givenname': 0, 'mobile': 0, 'phone': 0, 'surname': 0, 'userid': 1, 'username': 1}
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(LoginName)
  • returns the resolver identifier string

  • empty string if not exist

getResolverType()

getResolverType - return the type of the resolver

Returns

returns the string ‘ldapresolver’

Return type

string

getSearchFields(searchDict=None)

show, which search fields this userIdResolver supports

TODO: implementation is not completed

Parameters

searchDict – fields, which should be queried

Returns

dict of all searchFields

getUserId(LoginName)
search the user id from the login name

we need the encoding no more as the input is converted to unicode by the str2unicode function

Parameters

LoginName – the login of the user

Returns

the userId

getUserInfo(userId, no_passwd=False)

get some info about the user as we only have the loginId, we have to traverse the dict for the value

Parameters
  • userId – the to be searched user

  • no_passwd – retrun no password

Returns

dict of user info

getUserList(searchDict: dict)

get a list of all users matching the search criteria of the searchdict

Parameters

searchDict – dict of search expressions

getUsername(userId)

## TODO: why does this return bool

Parameters

userId – the user to be searched

Returns

true, if a user id exists

loadConfig(configDict)

The UserIdResolver could be configured from the pylon app config - here this could be the passwd file , whether it is /etc/passwd or /etc/shadow

loadFile()
init loads the /etc/passwd

user and uid as a dict for / user loginname lookup

resolver_parameters: Dict[str, Tuple[bool, Optional[Union[str, bool, int]], Callable[[Any], Any]]] = {'fileName': (True, None, <class 'str'>), 'readonly': (False, False, <function boolean>)}
sF = {'cryptpass': 1, 'description': 4, 'email': 4, 'userid': 2, 'username': 0}
searchFields = {'description': 'text', 'email': 'text', 'userid': 'numeric', 'username': 'text'}
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

stringMatch(cString, cPattern)
linotp.useridresolver.PasswdIdResolver.str2unicode(input_str)

convert as binary string into a unicode string by trying various encodings :param input_str: input binary string :return: unicode output

linotp.useridresolver.PasswdIdResolver.tokenise(r)