I'll post the backtrace from the privacyidea.log below. However, as far as I can tell, correcting the OTP Pin in the WebUI policy (changing SetPIN to EnrollPIN basically) seems to have caused the error to go away. I found that the error could sometimes just not show up, but if you kept clicked back and forth between Enroll token and All Tokens (as a user) it would eventually pop up. After correcting the WebUI policy, though, even doing that wouldn't cause the error to crop up so I'm thinking it's probably fixed. So thanks for the help gents! Like I said, here is the backtrace from the log file, though, for posterity (and the off chance that it rings a bell with someone about some OTHER issue that isn't readily apparent):
[2017-03-03 09:42:36,343][1408][-1357743296][ERROR][
privacyidea.app:1423] Exception on /caconnector/ [GET]
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1473, in full_dispatch_request
rv = self.preprocess_request()
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1666, in preprocess_request
rv = func()
File "/usr/lib/python2.7/dist-packages/privacyidea/api/auth.py", line 324, in decorated_function
return f(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/privacyidea/api/before_after.py", line 76, in before_user_request
before_request()
File "/usr/lib/python2.7/dist-packages/privacyidea/api/before_after.py", line 157, in before_request
"realm")})
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/log.py", line 187, in log_wrapper
f_result = func(*args, **kwds)
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/user.py", line 560, in get_user_from_param
user_object.get_resolvers()
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/user.py", line 189, in get_resolvers
uid = y.getUserId(self.login)
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/resolvers/LDAPIdResolver.py", line 154, in cache_wrapper
f_result = func(self, *args, **kwds)
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/resolvers/LDAPIdResolver.py", line 443, in getUserId
self._bind()
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/resolvers/LDAPIdResolver.py", line 343, in _bind
server_pool = self.get_serverpool(self.uri, self.timeout)
File "/usr/lib/python2.7/dist-packages/privacyidea/lib/resolvers/LDAPIdResolver.py", line 651, in get_serverpool
for uri in urilist.split(","):
AttributeError: 'NoneType' object has no attribute 'split'