Fix host:port handling
When we check the EC2 signature without the port part of the host value received, we should properly split host:port. Keep in mind the splitting should work for values like [fc00::]:123 too. Change-Id: I1d90dfcea3568e2a9b22069daa428ea6a2a38bd6 Closes-Bug: #1988168
This commit is contained in:
parent
051aca8e8a
commit
6c35b366e3
|
@ -12,6 +12,8 @@
|
||||||
|
|
||||||
# This file handles all flask-restful resources for /v3/ec2tokens
|
# This file handles all flask-restful resources for /v3/ec2tokens
|
||||||
|
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
import http.client
|
import http.client
|
||||||
from keystoneclient.contrib.ec2 import utils as ec2_utils
|
from keystoneclient.contrib.ec2 import utils as ec2_utils
|
||||||
|
@ -42,8 +44,8 @@ class EC2TokensResource(EC2_S3_Resource.ResourceBase):
|
||||||
# NOTE(vish): Some client libraries don't use the port when
|
# NOTE(vish): Some client libraries don't use the port when
|
||||||
# signing requests, so try again without the port.
|
# signing requests, so try again without the port.
|
||||||
elif ':' in credentials['host']:
|
elif ':' in credentials['host']:
|
||||||
hostname, _port = credentials.split(':')
|
parsed = urllib.parse.urlsplit('//' + credentials['host'])
|
||||||
credentials['host'] = hostname
|
credentials['host'] = parsed.hostname
|
||||||
# NOTE(davechen): we need to reinitialize 'signer' to avoid
|
# NOTE(davechen): we need to reinitialize 'signer' to avoid
|
||||||
# contaminated status of signature, this is similar with
|
# contaminated status of signature, this is similar with
|
||||||
# other programming language libraries, JAVA for example.
|
# other programming language libraries, JAVA for example.
|
||||||
|
|
Loading…
Reference in New Issue