Rust implementation of JWT signing/validation #8319
Merged
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.
Extracted from #8299
This implements JWT signing and validation in Rust.
The implementation is provided by the external crate
jsonwebtoken
, but we manage all key loading and storage as that crate is somewhat lacking in that department. The backend crypto for this is provided by Ring, though the external crate may offer pluggable backends in the future.The crate provides an interface
KeyRegistry
that can be used to generate, load and saveJWK
s using one of three algorithms:HS256
,RS256
orEC256
.The Python changes will come at a later date -- we can land the Rust impl first which will drastically shrink the size of the Python PR. In the other PR, I've managed to get all of the auth tests passing with this existing Python binding, but I may make some small changes to it before landing.
If any Python binding changes are suggested we can push those into #8299 as TODOs.