feat: Add edge-token extractor to lock down access #4
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.
What
This adds EdgeToken as a type. It also adds a way to go from an HttpRequest to an EdgeToken by implementing Actix's trait FromRequest for an EdgeToken.
If you have an endpoint where you need authentication, you simply say that you want an EdgeToken and the type system will guarantee you either get an EdgeToken or you'll get a 403 error.
Thoughts
We now have two traits, one for resolving features, and one for verifying tokens, or converting from an authorization header to a token. These are merged to a trait I've called EdgeProvider, and we now wire in an offline implementation of EdgeProvider (give bootstrap file, and a list of accepted tokens that will have read-access to the bootstrap file and it's results).
I tried to make our methods only require the traits they use, but the wiring in Actix from web::Data to method parameters wasn't able to see that something that implemented the Super trait would satisfy the Subtrait.
At least not the way I did it. Something to dig into next week.