Below is the debug output of the “list user” action. However I still have
no glue what the issue is So any help would be appreciated …
[2016-02-24
12:29:14,678][16245][140350622504704][DEBUG][privacyidea.api.lib.utils:235]
Can not get param: No JSON object could be decoded
[2016-02-24
12:29:14,680][16245][140350622504704][DEBUG][privacyidea.lib.audit:118]
Entering getAudit with arguments (<Config {‘JSON_AS_ASCII’: True, ‘PI_HSM’:
‘default’, ‘PI_LOGFILE’: ‘/var/log/privacyidea/privacyidea.log’, ‘pi_hsm’:
{‘obj’: <privacyidea.lib.security.default.DefaultSecurityModule object at
0x7fa5d45a1e50>}, ‘PI_AUDIT_KEY_PUBLIC’: ‘/etc/privacyidea/public.pem’,
‘SQLALCHEMY_POOL_RECYCLE’: None, ‘SQLALCHEMY_ECHO’: False, ‘PI_PEPPER’:
‘Never know…’, ‘SQLALCHEMY_TRACK_MODIFICATIONS’: True,
‘SQLALCHEMY_POOL_TIMEOUT’: None, ‘SQLALCHEMY_RECORD_QUERIES’: None,
‘PI_ENCFILE’: ‘/etc/privacyidea/enckey’, ‘SESSION_COOKIE_DOMAIN’: None,
‘SESSION_COOKIE_NAME’: ‘session’, ‘pi_token_types’: [‘registration’,
‘yubikey’, ‘radius’, ‘tiqr’, ‘pw’, ‘daplug’, ‘u2f’, ‘spass’, ‘4eyes’,
‘paper’, ‘motp’, ‘sms’, ‘email’, ‘totp’, ‘remote’, ‘hotp’, ‘certificate’,
‘yubico’, ‘sshkey’, ‘question’], ‘SQLALCHEMY_NATIVE_UNICODE’: None,
‘MAX_CONTENT_LENGTH’: None, ‘PERMANENT_SESSION_LIFETIME’:
datetime.timedelta(31), ‘SQLALCHEMY_POOL_SIZE’: None,
‘SQLALCHEMY_MAX_OVERFLOW’: None, ‘TRAP_HTTP_EXCEPTIONS’: False,
‘PRESERVE_CONTEXT_ON_EXCEPTION’: None, ‘SESSION_COOKIE_PATH’: None,
‘SQLALCHEMY_DATABASE_URI’: ‘mysql://user:password@localhost/privacyidea’,
‘LOGGER_NAME’: ‘privacyidea.app’, ‘SECRET_KEY’: ‘t0p s3cr3t’,
‘APPLICATION_ROOT’: None, ‘SERVER_NAME’: None, ‘PREFERRED_URL_SCHEME’:
‘http’, ‘TESTING’: False, ‘USE_X_SENDFILE’: False, ‘PI_AUDIT_MODULE’:
‘privacyidea.lib.auditmodules.sqlaudit’, ‘SESSION_COOKIE_SECURE’: False,
‘SQLALCHEMY_BINDS’: None, ‘DEBUG’: False, ‘SQLALCHEMY_COMMIT_ON_TEARDOWN’:
False, ‘JSONIFY_PRETTYPRINT_REGULAR’: True, ‘PROPAGATE_EXCEPTIONS’: None,
‘PI_LOGLEVEL’: 10, ‘TRAP_BAD_REQUEST_ERRORS’: False, ‘JSON_SORT_KEYS’:
True, ‘SESSION_COOKIE_HTTPONLY’: True, ‘SEND_FILE_MAX_AGE_DEFAULT’: 43200,
‘PI_AUDIT_KEY_PRIVATE’: ‘/etc/privacyidea/private.pem’, ‘SUPERUSER_REALM’:
[‘super’, ‘administrators’]}>,) and keywords {}
[2016-02-24
12:29:14,680][16245][140350622504704][DEBUG][privacyidea.lib.audit:118]
Entering getAuditClass with arguments
(‘privacyidea.lib.auditmodules.sqlaudit’, ‘Audit’) and keywords {}
[2016-02-24
12:29:14,680][16245][140350622504704][DEBUG][privacyidea.lib.audit:73]
klass: <class ‘privacyidea.lib.auditmodules.sqlaudit.Audit’>
[2016-02-24
12:29:14,680][16245][140350622504704][DEBUG][privacyidea.lib.audit:129]
Exiting getAuditClass with result <class
‘privacyidea.lib.auditmodules.sqlaudit.Audit’>
[2016-02-24
12:29:14,680][16245][140350622504704][DEBUG][privacyidea.lib.auditmodules.sqlaudit:142]
using the connect string mysql://user:password@localhost/privacyidea
[2016-02-24
12:29:14,686][16245][140350622504704][DEBUG][privacyidea.lib.audit:129]
Exiting getAudit with result <privacyidea.lib.auditmodules.sqlaudit.Audit
object at 0x7fa5f9ce5710>
[2016-02-24
12:29:14,686][16245][140350622504704][DEBUG][privacyidea.lib.realm:118]
Entering get_realms with arguments () and keywords {}
[2016-02-24
12:29:14,690][16245][140350622504704][DEBUG][privacyidea.lib.realm:129]
Exiting get_realms with result {u’mysql-realm’: {‘default’: True,
‘resolver’: [{‘priority’: 1L, ‘type’: u’sqlresolver’, ‘name’:
u’mysql-backend’}]}}
[2016-02-24
12:29:14,715][16245][140350622504704][DEBUG][privacyidea.api.lib.utils:235]
Can not get param: No JSON object could be decoded
[2016-02-24
12:29:14,764][16245][140350605719296][DEBUG][privacyidea.api.lib.utils:235]
Can not get param: No JSON object could be decoded
[2016-02-24
12:29:14,766][16245][140350605719296][DEBUG][privacyidea.lib.audit:118]
Entering getAudit with arguments (<Config {‘JSON_AS_ASCII’: True, ‘PI_HSM’:
‘default’, ‘PI_LOGFILE’: ‘/var/log/privacyidea/privacyidea.log’, ‘pi_hsm’:
{‘obj’: <privacyidea.lib.security.default.DefaultSecurityModule object at
0x7fa5d45a1e50>}, ‘PI_AUDIT_KEY_PUBLIC’: ‘/etc/privacyidea/public.pem’,
‘SQLALCHEMY_POOL_RECYCLE’: None, ‘SQLALCHEMY_ECHO’: False, ‘PI_PEPPER’:
‘Never know…’, ‘SQLALCHEMY_TRACK_MODIFICATIONS’: True,
‘SQLALCHEMY_POOL_TIMEOUT’: None, ‘SQLALCHEMY_RECORD_QUERIES’: None,
‘PI_ENCFILE’: ‘/etc/privacyidea/enckey’, ‘SESSION_COOKIE_DOMAIN’: None,
‘SESSION_COOKIE_NAME’: ‘session’, ‘pi_token_types’: [‘registration’,
‘yubikey’, ‘radius’, ‘tiqr’, ‘pw’, ‘daplug’, ‘u2f’, ‘spass’, ‘4eyes’,
‘paper’, ‘motp’, ‘sms’, ‘email’, ‘totp’, ‘remote’, ‘hotp’, ‘certificate’,
‘yubico’, ‘sshkey’, ‘question’], ‘SQLALCHEMY_NATIVE_UNICODE’: None,
‘MAX_CONTENT_LENGTH’: None, ‘PERMANENT_SESSION_LIFETIME’:
datetime.timedelta(31), ‘SQLALCHEMY_POOL_SIZE’: None,
‘SQLALCHEMY_MAX_OVERFLOW’: None, ‘TRAP_HTTP_EXCEPTIONS’: False,
‘PRESERVE_CONTEXT_ON_EXCEPTION’: None, ‘SESSION_COOKIE_PATH’: None,
‘SQLALCHEMY_DATABASE_URI’: ‘mysql://user:password@localhost/privacyidea’,
‘LOGGER_NAME’: ‘privacyidea.app’, ‘SECRET_KEY’: ‘t0p s3cr3t’,
‘APPLICATION_ROOT’: None, ‘SERVER_NAME’: None, ‘PREFERRED_URL_SCHEME’:
‘http’, ‘TESTING’: False, ‘USE_X_SENDFILE’: False, ‘PI_AUDIT_MODULE’:
‘privacyidea.lib.auditmodules.sqlaudit’, ‘SESSION_COOKIE_SECURE’: False,
‘SQLALCHEMY_BINDS’: None, ‘DEBUG’: False, ‘SQLALCHEMY_COMMIT_ON_TEARDOWN’:
False, ‘JSONIFY_PRETTYPRINT_REGULAR’: True, ‘PROPAGATE_EXCEPTIONS’: None,
‘PI_LOGLEVEL’: 10, ‘TRAP_BAD_REQUEST_ERRORS’: False, ‘JSON_SORT_KEYS’:
True, ‘SESSION_COOKIE_HTTPONLY’: True, ‘SEND_FILE_MAX_AGE_DEFAULT’: 43200,
‘PI_AUDIT_KEY_PRIVATE’: ‘/etc/privacyidea/private.pem’, ‘SUPERUSER_REALM’:
[‘super’, ‘administrators’]}>,) and keywords {}
[2016-02-24
12:29:14,766][16245][140350605719296][DEBUG][privacyidea.lib.audit:118]
Entering getAuditClass with arguments
(‘privacyidea.lib.auditmodules.sqlaudit’, ‘Audit’) and keywords {}
[2016-02-24
12:29:14,766][16245][140350605719296][DEBUG][privacyidea.lib.audit:73]
klass: <class ‘privacyidea.lib.auditmodules.sqlaudit.Audit’>
[2016-02-24
12:29:14,766][16245][140350605719296][DEBUG][privacyidea.lib.audit:129]
Exiting getAuditClass with result <class
‘privacyidea.lib.auditmodules.sqlaudit.Audit’>
[2016-02-24
12:29:14,766][16245][140350605719296][DEBUG][privacyidea.lib.auditmodules.sqlaudit:142]
using the connect string mysql://user:password@localhost/privacyidea
[2016-02-24
12:29:14,772][16245][140350605719296][DEBUG][privacyidea.lib.audit:129]
Exiting getAudit with result <privacyidea.lib.auditmodules.sqlaudit.Audit
object at 0x7fa5f9ce1d10>
[2016-02-24
12:29:14,773][16245][140350605719296][DEBUG][privacyidea.lib.user:118]
Entering get_user_list with arguments ({‘realm’: u’mysql-realm’},) and
keywords {}
[2016-02-24
12:29:14,773][16245][140350605719296][DEBUG][privacyidea.lib.realm:118]
Entering get_realms with arguments (u’mysql-realm’,) and keywords {}
[2016-02-24
12:29:14,777][16245][140350605719296][DEBUG][privacyidea.lib.realm:129]
Exiting get_realms with result {u’mysql-realm’: {‘default’: True,
‘resolver’: [{‘priority’: 1L, ‘type’: u’sqlresolver’, ‘name’:
u’mysql-backend’}]}}
[2016-02-24
12:29:14,777][16245][140350605719296][DEBUG][privacyidea.lib.user:609]
Check for resolver class: u’mysql-backend’
[2016-02-24
12:29:14,777][16245][140350605719296][DEBUG][privacyidea.lib.resolver:118]
Entering get_resolver_object with arguments (u’mysql-backend’,) and
keywords {}
[2016-02-24
12:29:14,778][16245][140350605719296][DEBUG][privacyidea.lib.resolver:118]
Entering get_resolver_list with arguments () and keywords
{‘filter_resolver_name’: u’mysql-backend’}
[2016-02-24
12:29:14,783][16245][140350605719296][DEBUG][privacyidea.lib.crypto:118]
Entering decryptPassword with arguments
(u’c8911852421ce9a08c34947efd541e9f:cfaa876db72736dd1f96b47d1e1e3757422f1303ff27d3c6589b6b18905d3eac14d313b836437c68f3357b5b01659b32’,)
and keywords {}
[2016-02-24
12:29:14,783][16245][140350605719296][DEBUG][privacyidea.lib.crypto:131]
Exiting decryptPassword with result HIDDEN
[2016-02-24
12:29:14,783][16245][140350605719296][DEBUG][privacyidea.lib.resolver:129]
Exiting get_resolver_list with result {u’mysql-backend’: {‘data’: {u’Map’:
u’{ “userid” : “USERID”, “givenname” : “FIRSTNAME”, “surname” : “LASTNAME”,
“email” : “EMAIL”, “password” : “PASSWORD” }‘, u’Encoding’: u’‘, u’Driver’:
u’mysql’, u’Database’: u’idp’, u’Editable’: u’1’, u’poolSize’: u’‘,
u’Server’: u’127.0.0.1’, u’Limit’: u’500’, u’User’: u’idp’, u’poolTimeout’:
u’‘, u’Table’: u’users’, u’Password’: ‘lo43sYVfMA3xMGK1mn23’, u’Where’:
u’‘, u’Port’: u’3306’, u’conParams’: u’‘}, ‘type’: u’sqlresolver’,
‘resolvername’: u’mysql-backend’}}
[2016-02-24
12:29:14,783][16245][140350605719296][DEBUG][privacyidea.lib.config:118]
Entering get_resolver_list with arguments () and keywords {}
[2016-02-24
12:29:14,784][16245][140350605719296][DEBUG][privacyidea.lib.config:421]
None
[2016-02-24
12:29:14,784][16245][140350605719296][DEBUG][privacyidea.lib.config:129]
Exiting get_resolver_list with result
set([‘privacyidea.lib.resolvers.PasswdIdResolver’,
‘privacyidea.lib.resolvers.SCIMIdResolver’,
‘privacyidea.lib.resolvers.SQLIdResolver’,
‘privacyidea.lib.resolvers.LDAPIdResolver’])
[2016-02-24
12:29:14,784][16245][140350605719296][DEBUG][privacyidea.lib.config:553]
using the module list: set([‘privacyidea.lib.resolvers.PasswdIdResolver’,
‘privacyidea.lib.resolvers.SCIMIdResolver’,
‘privacyidea.lib.resolvers.SQLIdResolver’,
‘privacyidea.lib.resolvers.LDAPIdResolver’])
[2016-02-24
12:29:14,784][16245][140350605719296][DEBUG][privacyidea.lib.config:561]
import module: privacyidea.lib.resolvers.PasswdIdResolver
[2016-02-24
12:29:14,784][16245][140350605719296][DEBUG][privacyidea.lib.config:561]
import module: privacyidea.lib.resolvers.SCIMIdResolver
[2016-02-24
12:29:14,784][16245][140350605719296][DEBUG][privacyidea.lib.config:561]
import module: privacyidea.lib.resolvers.SQLIdResolver
[2016-02-24
12:29:14,784][16245][140350605719296][DEBUG][privacyidea.lib.config:561]
import module: privacyidea.lib.resolvers.LDAPIdResolver
[2016-02-24
12:29:14,784][16245][140350605719296][DEBUG][privacyidea.lib.config:374]
module: <module ‘privacyidea.lib.resolvers.PasswdIdResolver’ from
‘/opt/privacyIDEA/lib/python2.7/site-packages/privacyidea/lib/resolvers/PasswdIdResolver.pyc’>
[2016-02-24
12:29:14,785][16245][140350605719296][DEBUG][privacyidea.lib.config:374]
module: <module ‘privacyidea.lib.resolvers.SCIMIdResolver’ from
‘/opt/privacyIDEA/lib/python2.7/site-packages/privacyidea/lib/resolvers/SCIMIdResolver.pyc’>
[2016-02-24
12:29:14,785][16245][140350605719296][DEBUG][privacyidea.lib.config:374]
module: <module ‘privacyidea.lib.resolvers.SQLIdResolver’ from
‘/opt/privacyIDEA/lib/python2.7/site-packages/privacyidea/lib/resolvers/SQLIdResolver.pyc’>
[2016-02-24
12:29:14,785][16245][140350605719296][DEBUG][privacyidea.lib.config:374]
module: <module ‘privacyidea.lib.resolvers.LDAPIdResolver’ from
‘/opt/privacyIDEA/lib/python2.7/site-packages/privacyidea/lib/resolvers/LDAPIdResolver.pyc’>
[2016-02-24
12:29:14,785][16245][140350605719296][DEBUG][privacyidea.lib.resolver:118]
Entering get_resolver_config with arguments (u’mysql-backend’,) and
keywords {}
[2016-02-24
12:29:14,785][16245][140350605719296][DEBUG][privacyidea.lib.resolver:118]
Entering get_resolver_list with arguments () and keywords
{‘filter_resolver_name’: u’mysql-backend’}
[2016-02-24
12:29:14,790][16245][140350605719296][DEBUG][privacyidea.lib.crypto:118]
Entering decryptPassword with arguments
(u’c8911852421ce9a08c34947efd541e9f:cfaa876db72736dd1f96b47d1e1e3757422f1303ff27d3c6589b6b18905d3eac14d313b836437c68f3357b5b01659b32’,)
and keywords {}
[2016-02-24
12:29:14,790][16245][140350605719296][DEBUG][privacyidea.lib.crypto:131]
Exiting decryptPassword with result HIDDEN
[2016-02-24
12:29:14,791][16245][140350605719296][DEBUG][privacyidea.lib.resolver:129]
Exiting get_resolver_list with result {u’mysql-backend’: {‘data’: {u’Map’:
u’{ “userid” : “USERID”, “givenname” : “FIRSTNAME”, “surname” : “LASTNAME”,
“email” : “EMAIL”, “password” : “PASSWORD” }‘, u’Encoding’: u’‘, u’Driver’:
u’mysql’, u’Database’: u’idp’, u’Editable’: u’1’, u’poolSize’: u’‘,
u’Server’: u’127.0.0.1’, u’Limit’: u’500’, u’User’: u’idp’, u’poolTimeout’:
u’‘, u’Table’: u’users’, u’Password’: ‘lo43sYVfMA3xMGK1mn23’, u’Where’:
u’‘, u’Port’: u’3306’, u’conParams’: u’‘}, ‘type’: u’sqlresolver’,
‘resolvername’: u’mysql-backend’}}
[2016-02-24
12:29:14,791][16245][140350605719296][DEBUG][privacyidea.lib.resolver:129]
Exiting get_resolver_config with result {u’Map’: u’{ “userid” : “USERID”,
“givenname” : “FIRSTNAME”, “surname” : “LASTNAME”, “email” : “EMAIL”,
“password” : “PASSWORD” }‘, u’Encoding’: u’‘, u’Driver’: u’mysql’,
u’Database’: u’idp’, u’Editable’: u’1’, u’poolSize’: u’‘, u’Server’:
u’127.0.0.1’, u’Limit’: u’500’, u’User’: u’idp’, u’poolTimeout’: u’‘,
u’Table’: u’users’, u’Password’: ‘lo43sYVfMA3xMGK1mn23’, u’Where’: u’‘,
u’Port’: u’3306’, u’conParams’: u’‘}
[2016-02-24
12:29:14,792][16245][140350605719296][DEBUG][privacyidea.lib.resolvers.SQLIdResolver:647]
SQL connectstring: u’mysql://user:password@127.0.0.1:3306/idp’
[2016-02-24
12:29:14,792][16245][140350605719296][INFO][privacyidea.lib.resolvers.SQLIdResolver:567]
using the connect string mysql://user:password@127.0.0.1:3306/idp
[2016-02-24
12:29:14,793][16245][140350605719296][DEBUG][privacyidea.lib.resolvers.SQLIdResolver:570]
using pool_size=5 and pool_timeout=10
[2016-02-24
12:29:14,811][16245][140350605719296][DEBUG][privacyidea.lib.resolver:129]
Exiting get_resolver_object with result
<privacyidea.lib.resolvers.SQLIdResolver.IdResolver object at
0x7fa5d4886ad0>
[2016-02-24
12:29:14,812][16245][140350605719296][DEBUG][privacyidea.lib.user:611] with
this search dictionary: {‘username’: ‘*’}
[2016-02-24
12:29:14,812][16245][140350605719296][ERROR][privacyidea.lib.user:626]
TypeError(‘getattr(): attribute name must be string’,)
[2016-02-24
12:29:14,812][16245][140350605719296][DEBUG][privacyidea.lib.user:627]
Traceback (most recent call last):
File
“/opt/privacyIDEA/lib/python2.7/site-packages/privacyidea/lib/user.py”,
line 612, in get_user_list
ulist = y.getUserList(searchDict)
File
“/opt/privacyIDEA/lib/python2.7/site-packages/privacyidea/lib/resolvers/SQLIdResolver.py”,
line 500, in getUserList
conditions.append(getattr(self.TABLE, column).like(value))
TypeError: getattr(): attribute name must be string
[2016-02-24
12:29:14,812][16245][140350605719296][DEBUG][privacyidea.lib.user:129]
Exiting get_user_list with result
[2016-02-24
12:29:14,835][16245][140350605719296][DEBUG][privacyidea.api.lib.utils:235]
Can not get param: No JSON object could be decodedOn Wednesday, February 24, 2016 at 6:56:08 PM UTC+1, Michael Urspringer wrote:
I created SQL resolver for MySQL and the “Test” button shows me the
correct number of users. I also can add new users via the privacyIDEA web
interface to that SQL database. However, as soon as I want to list my
users in privacyIDEA web interface no users are displayed and in the error
log I see this message:
[2016-02-24
11:36:39,023][10987][140055712585472][ERROR][privacyidea.lib.user:626]
TypeError(‘getattr(): attribute name must be string’,)
This is my attribute mapping in the resolver:
{ “userid” : “USERID” , “givenname” : “FIRSTNAME” , “surname” : “LASTNAME”
, “email” : “EMAIL” , “password” : “PASSWORD” }
And this is my database structure:
CREATE TABLE users
(
USERID int(11) NOT NULL AUTO_INCREMENT,
EMAIL varchar(30) NOT NULL,
FIRSTNAME varchar(30) NOT NULL,
LASTNAME varchar(30) NOT NULL,
PASSWORD varchar(30) NOT NULL,
PRIMARY KEY (USERID)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
I tried to change all fields to “TEXT” instead of “VARCHAR” and also a
USERID with type VARCHAR instead of INT. But I guess I miss something else
as the issue is also if I just use one of these fields.
Maybe I understood something wrong here?