Fix misuse DateTimeOffset and UTC in KeyManagement #87
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.
During key management initialization there is an edge case that could cause an unhanded exception with the message "Failed to create and then load new keys.". This could be seen during requests to the discovery and keys endpoint.
The conditions that would trigger this edge case were when no keys had yet been created, a low rotation interval configured (common when testing), and if the local time zone was after UTC. With typical production settings for the rotation interval, this initialization error would not occur and the normal key management processing would execute properly.
The bug was caused due to an incorrect use of non-UTC DateTimeOffset API, and the fix is to use the correct UTC version of the API.