When a request came in with no token and the auth_token middleware
wasn't configured with an auth version, a request would be made to
fetch the versions supported by the server. This causes problems in
projects that have unit tests using the auth_token middleware because
they didn't expect to have an Identity server running.
The fix for this is to refactor the identity version handling to a
strategy pattern.
There were 2 subclasses of _IdentityServer in auth_token, one for
V2 and one for V3. This is excessive since there's only a couple of
methods that are needed and not all the _IdentityServer class. Using
the pricipal of preferring composition over inheritance, the code to
handle V2/V3 is moved into a simpler strategy pattern. This also
moves code out of the AuthProtocol class which is too complicated
already, and it allows more refactoring since the _IdentityServer
reference can be created and passed to extracted classes for them
to use.
Reviewed: https:/ /review. openstack. org/140765 /git.openstack. org/cgit/ openstack/ keystonemiddlew are/commit/ ?id=c97be0a9ee7 78f25e2931aeb1f 678c145c2f1d2b
Committed: https:/
Submitter: Jenkins
Branch: master
commit c97be0a9ee778f2 5e2931aeb1f678c 145c2f1d2b
Author: Brant Knudson <email address hidden>
Date: Wed Dec 10 09:46:44 2014 -0600
Fix auth_token does version request for no token
When a request came in with no token and the auth_token middleware
wasn't configured with an auth version, a request would be made to
fetch the versions supported by the server. This causes problems in
projects that have unit tests using the auth_token middleware because
they didn't expect to have an Identity server running.
The fix for this is to refactor the identity version handling to a
strategy pattern.
There were 2 subclasses of _IdentityServer in auth_token, one for
V2 and one for V3. This is excessive since there's only a couple of
methods that are needed and not all the _IdentityServer class. Using
the pricipal of preferring composition over inheritance, the code to
handle V2/V3 is moved into a simpler strategy pattern. This also
moves code out of the AuthProtocol class which is too complicated
already, and it allows more refactoring since the _IdentityServer
reference can be created and passed to extracted classes for them
to use.
Closes-Bug: #1404294 b96e4b1e9ad81a7 36495a2b58a
Change-Id: If69fbb73bea268