keystonemiddleware/keystonemiddleware
Tim Burke da5932affc Respect delay_auth_decision when Keystone is unavailable
The delay_auth_decision option has two main uses:

  1. Allow a service to provide its own auth mechanism, separate from
     auth tokens (like Swift's tempurl middleware).
  2. Allow a service to integrate with multiple auth middlewares which
     may want to use the same X-Auth-Token header.

The first case works fine even when the service has trouble talking to
Keystone -- the client doesn't send an X-Auth-Token header, so we never
even attempt to contact Keystone.

The second case can be problematic, however. The client will provide
some token, and we don't know whether it's valid for Keystone, the other
auth system, or neither. We have to *try* contacting Keystone, but if
that was down we'd previously return a 503 without ever trying the other
auth system. As a result, a Keystone failure results in a total system
failure.

Now, when delay_auth_decision is True and we cannot determine whether a
token is valid or invalid, we'll instead declare the token invalid and
defer the rejection. As a result, Keystone failures only affect Keystone
users, and tokens issued by the other auth system may still be validated
and used.

Change-Id: Ie4b3319862ba7fbd329dc6883ce837e894d5270c
2018-09-11 07:54:43 -06:00
..
_common Replace six.iteritems() with .items() 2017-07-12 13:43:55 +07:00
audit Add option to disable using oslo_message notifier 2018-02-20 11:26:22 +01:00
auth_token Respect delay_auth_decision when Keystone is unavailable 2018-09-11 07:54:43 -06:00
echo Replace six.iteritems() with .items() 2017-07-12 13:43:55 +07:00
locale Imported Translations from Zanata 2018-05-01 07:09:40 +00:00
tests Respect delay_auth_decision when Keystone is unavailable 2018-09-11 07:54:43 -06:00
__init__.py Moving middleware to new location 2014-06-19 15:50:41 -07:00
ec2_token.py use oslo.log instead of logging 2017-01-13 03:24:18 +00:00
exceptions.py Create a Config object 2016-06-10 18:21:56 +00:00
fixture.py Remove use of positional decorator 2017-08-07 13:18:19 -07:00
i18n.py Update URLs in documentation 2017-07-20 16:38:16 +08:00
opts.py Move auth token opts calculation into auth_token 2016-06-13 14:03:23 -03:00
s3_token.py Rename auth_uri to www_authenticate_uri 2017-10-11 14:00:49 +02:00