Skip to content

Commit

Permalink
fix: aws path normalization in windows (#842)
Browse files Browse the repository at this point in the history
Path normalization for the canonical_uri was broken in windows.
This is because we were using `os.path.normpath`.
This normalizes "/" paths to "\\" in Windows OS.

Confirmed the fix is working in Windows.
  • Loading branch information
bojeil-google committed Aug 17, 2021
1 parent 71cb011 commit 4e0fb1c
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion google/auth/aws.py
Expand Up @@ -45,6 +45,7 @@
import os
import re
import urllib
from urllib.parse import urljoin

from google.auth import _helpers
from google.auth import environment_vars
Expand Down Expand Up @@ -112,13 +113,17 @@ def get_request_options(
additional_headers = additional_headers or {}

uri = urllib.parse.urlparse(url)
# Normalize the URL path. This is needed for the canonical_uri.
# os.path.normpath can't be used since it normalizes "/" paths
# to "\\" in Windows OS.
normalized_uri = urllib.parse.urlparse(urljoin(url, uri.path))
# Validate provided URL.
if not uri.hostname or uri.scheme != "https":
raise ValueError("Invalid AWS service URL")

header_map = _generate_authentication_header_map(
host=uri.hostname,
canonical_uri=os.path.normpath(uri.path or "/"),
canonical_uri=normalized_uri.path or "/",
canonical_querystring=_get_canonical_querystring(uri.query),
method=method,
region=self._region_name,
Expand Down

0 comments on commit 4e0fb1c

Please sign in to comment.