> This diff is large, but smaller parts make no sense without each other.
Introduced two entities:
- `HttpAuthenticatedService` trait - to be implemented by services like `ReportsService` or `BlobServiceClient`.
They do require either CSAM (UserIdentity) or a service-to-service token to work (e.g. make blob calls).
But they can still be used in unauthenticated endpoints.
- `Authenticated<S>` extractor. This is to be used in HTTP handler functions to get an instance of an aforementioned service.
The business logic code (`FromRequest` impl) was already implemented for Reports service. I extracted it into
the above trait and made more flexible. Added lots of in-code comments to better understand.
In the next diff, this will be implemented for Backup service.
Depends on D12506