1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, AuthError>;
7
8#[derive(Debug, Error)]
9#[non_exhaustive]
10pub enum AuthError {
11 #[error("jwt invalid: {0}")]
12 JwtInvalid(String),
13 #[error("jwt expired")]
14 JwtExpired,
15 #[error("jwt audience mismatch: expected {expected}, got {actual}")]
16 JwtAudienceMismatch { expected: String, actual: String },
17 #[error("jwt issuer mismatch: expected {expected}, got {actual}")]
18 JwtIssuerMismatch { expected: String, actual: String },
19 #[error("jwt unknown key id: {0}")]
20 JwtUnknownKid(String),
21 #[error("oidc discovery failed: {0}")]
22 OidcDiscovery(String),
23 #[error("jwks fetch failed: {0}")]
24 JwksFetch(String),
25 #[error("dpop invalid: {0}")]
26 DpopInvalid(String),
27 #[error("dpop htu mismatch: expected {expected}, got {actual}")]
28 DpopHtuMismatch { expected: String, actual: String },
29 #[error("dpop replay detected (jti={0})")]
30 DpopReplay(String),
31 #[error("dpop replay tracker capacity exceeded")]
32 DpopCapacityExceeded,
33 #[error("spiffe fetch failed: {0}")]
34 SpiffeFetch(String),
35 #[error("spiffe identity expired")]
36 SpiffeExpired,
37 #[error("api key invalid")]
38 ApiKeyInvalid,
39 #[error("api key expired")]
40 ApiKeyExpired,
41 #[error("api key revoked")]
42 ApiKeyRevoked,
43 #[error("clock error: {0}")]
44 Clock(String),
45 #[error("other: {0}")]
46 Other(String),
47}