use async_trait;
use crateAuthError;
use cratePrincipal;
/// Trait for authenticating incoming requests.
///
/// The auth middleware calls `authenticate()` with the raw `Authorization`
/// header value. Implementations validate the token and return a `Principal`
/// on success.