fix: use gmdate to format x-amz-date with UTC irrespective of timezone #540
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue
Currently the value for
x-amz-date
is generated from date function, but if user sets a different timezone other than UTC, the generated timestamp has an invalid timestamp.This causes the following
SignatureDoesNotMatch
error when authenticating with Workload Identity Federation:When the timezone is older than UTC:
When the timezone is later than UTC:
This happens because
date('Ymd\THis\Z')
produces timezone-aware timestamp, but the suffix is alwaysZ
(UTC).Reproduce
We can easily reproduce this issue just adding
date_default_timezone_set('America/Los_Angeles');
to the code.Also the following code illustrates how
date('Ymd\THis\Z')
produces invalid timestamp.How to fix this
I changed the code to use gmdate instead of date function irrespective of the timezone the user sets.
I locally changed the code and confirmed that this fix works even if a different timezone is set in the code.