I forgot to mention we do get some useful information when debug_authorization is set to True. Here is what we get:
2017-11-21 01:24:14,225 DEBUG [appname._authdebug_view()][waitress] debug_authorization of url http://localhost:6543/ (view name u'' against context <====================================.models.RootFactory object at 0x7f7ef246af90>): ACLDenied permission 'authenticated' via ACE '<default deny>' in ACL [...ACLs here...] on context <appname.models.RootFactory object at 0x7faf3c5a7c10> for principals ['system.Everyone'] On Tuesday, November 21, 2017 at 9:41:11 AM UTC-6, Alen wrote: > > Hi, > > We've encountered a strange authorization issue we can't quite figure out > how to get past... When the users of our web app are inactive for a while > and they come back to use it, on first request they get a HTTPForbidden > error (presumably because the session has expired due to inactivity). > However, they're not logged out and if they refresh the page everything > works as it should. The behavior is pretty easy to replicate, we just set > session.timeout to 5 seconds, and then use the app after being inactive for > 5 seconds and we always get the error. But here's the kicker - if we set > pyramid.debug_authorization to True then we don't see this issue! > > We need help debugging this issue further...but we're pretty sure it's > something misconfigured on our end. We're running latest Pyramid (1.9.1) > with pyramid_beaker for session management. Below is an excerpt from our > development.ini file with the relevant settings: > > ================================ > pyramid.reload_templates = true > pyramid.debug_authorization = false > pyramid.debug_notfound = true > pyramid.debug_routematch = false > pyramid.default_locale_name = en > pyramid.includes = > pyramid_tm > pyramid_debugtoolbar > pyramid_beaker > > # Debug toolbar > debugtoolbar.enabled = false > debugtoolbar.hosts = 0.0.0.0/0 > > # Use http instead of https in local environment for base portal URL > auth.policy.secure = false > > # Beaker config > cache.type = ext:memcached > cache.url = 127.0.0.1:11211 > cache.lock_dir = %(here)s/data/sessions/lock > cache.regions = second, default_term, short_term, long_term, full_day, > forever_term > cache.second.expire = 1 > cache.short_term.expire = 60 > cache.default_term.expire = 300 > cache.long_term.expire = 3600 > cache.full_day.expire = 86400 > cache.forever_term.expire = 604800 > session.type = ext:memcached > session.url = 127.0.0.1:11211 > session.data_dir = %(here)s/data/sessions/data > session.lock_dir = %(here)s/data/sessions/lock > session.key = KEY_HNAME > session.secret = SECRET_KEY > session.cookie_expires = 86400 > session.secure = false > session.timeout = 3600 > # End of beaker config > ================================ > > And here is the auth policy setup from our __init__.py file: > > ================================ > authn_policy = AuthTktAuthenticationPolicy( > # this is the secret used to sign cookies > 'SECRET_KEY', > callback=groupfinder, > secure=use_https, #This should always be True, unless overridden > in development.ini file > http_only=True, > timeout=21600, > reissue_time=2160, > max_age=86400, > hashalg='sha512') > ================================ > > Thanks > -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to pylons-discuss+unsubscr...@googlegroups.com. To post to this group, send email to pylons-discuss@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/6a9d8b6e-c8ec-4bb2-8733-72e31e7ac7c7%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.